home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / gpp-1_42.lha / g++-1.42.0 / ChangeLog < prev    next >
Text File  |  1992-07-13  |  79KB  |  2,077 lines

  1. Mon Jul 13 14:12:58 1992  Michael Tiemann  (tiemann@rtl.cygnus.com)
  2.  
  3.     * version.c: Version 1.41.0 released.
  4.  
  5.     * toplev.c: Various changes to retain compatibility with gcc 1.41.
  6.  
  7. Sat Oct 19 22:04:48 1991  Michael Tiemann  (tiemann at cygnus.com)
  8.  
  9.     * version.c: Version 1.40.3 released.
  10.  
  11.     * cplus-tree.c (build_cplus_new): Set TREE_SIDE_EFFECTS on RVAL.
  12.  
  13. Fri Oct 18 09:10:43 1991  Michael Tiemann  (tiemann at cygnus.com)
  14.  
  15.     * cplus-parse.y (stmts): Fix parsing rules to match C++ semantics
  16.     better (and hence give the compiler better error recovery).
  17.  
  18. Thu Oct 17 12:04:51 1991  Heinrich G. Seidl  (hgs at cygnus.com)
  19.  
  20.     * Fixed bug p0000250/p0000393 
  21.     cplus-lex.c (interface_strcmp) check also t1 for remaining `.'s.
  22.  
  23. Thu Oct  3 04:20:31 1991  Michael Tiemann  (tiemann at cygnus.com)
  24.  
  25.     * cplus-typeck.c (actualparameterlist): If TTYPE is a
  26.     FUNCTION_TYPE and TYPE is NULL_TREE, don't crash, just convert the
  27.     argument to a pointer type.
  28.  
  29. Mon Sep 30 18:58:41 1991  Heinrich G. Seidl  (hgs at cygnus.com)
  30.  
  31.     * the problem is at line 3950 in file cplus-typeck.c.  SAVE_EXPR
  32.     changes from version 1 to version 2.  The correct code for version
  33.     1 is as follows:
  34.  
  35.         if (TREE_CODE (arg) == SAVE_EXPR && TREE_CODE (targ) == INDIRECT_REF)
  36.         return build (SAVE_EXPR, TYPE_POINTER_TO (TREE_TYPE (arg)),
  37.              TREE_OPERAND (targ, 0), NULL);
  38.  
  39.     This is what's there, minus `current_function_decl'.
  40.  
  41. Wed Sep 11 05:51:00 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  42.  
  43.     * toplev.c: Change some `#ifdef 0' controls to `#if 0'.
  44.  
  45.     * expr.c (preexpand_calls): Don't preexpand calls inside a
  46.     WITH_CLEANUP_EXPR.  The gestalt of a WITH_CLEANUP_EXPRs must be
  47.     understood at the top level.
  48.     (expand_call): Check for special function calls more efficiently.
  49.  
  50.     * cplus-tree.c (build_cplus_new): When building cleanup, make
  51.     the call to the cleanup nonvirtual.
  52.  
  53. Sat Sep  7 16:25:50 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  54.  
  55.     * cplus-class.c (ideal_candidate): Prefer non-const member functions
  56.     to const member functions when there is a choice.
  57.  
  58. Tue Sep  3 22:07:04 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  59.  
  60.     * cplus-init.c (build_vec_delete): Fix off-by-one error for arrays
  61.     of length 1.
  62.  
  63. Tue Aug 27 06:44:12 1991  Michael Tiemann  (tiemann at rtl.cygnus.com)
  64.  
  65.     * cplus-typeck.c (c_expand_return): Don't use the cleanup generated
  66.     by `build_functional_cast'.
  67.  
  68.     * cplus-class.c (resolves_to_fixed_type_p): Handle WITH_CLEANUP_EXPR.
  69.  
  70. Mon Aug 26 06:20:43 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  71.  
  72.     * cplus-type2.c (build_functional_cast): Treat constructor casts as
  73.     having cleanups in this function.
  74.     * cplus-decl.c (finish_decl): Use cleanups created by functinal
  75.     casts used as initializers.
  76.  
  77.     * cplus-init.c (expand_member_init): Call error with
  78.     IDENTIFIER_POINTER, not DECL_NAME, of NAME.
  79.  
  80.     * cplus-method.c (fndecl_as_string): Don't skip `in_charge'
  81.     parameter twice.
  82.  
  83.     * cplus-init.c (build_new): Delete code which short-circuited
  84.     multiple indirections in ABSDCL and made everything look like just a
  85.     single level of indirection.
  86.  
  87.     * cplus-decl.c (grokdeclarator): Set and test new variable
  88.     EXPLICIT_TYPE.    Give warning when decls are given default types.
  89.  
  90.     * cplus-typeck.c (type_unknown_p): If TREE_CODE (EXP) == TREE_LIST,
  91.     it's type is unknown.
  92.  
  93.     * cplus-typeck.c (commonparms): Don't insert default parmeter values
  94.     into existing arg lists.  Instead, unify them into new ones only.
  95.  
  96.     * cplus-typeck.c (convert_arguments): Don't forcibly convert ptrs to
  97.     other things into ptrs to functions just to satisfy the conversion
  98.     of virtual functions.
  99.  
  100. Sun Aug 25 23:00:07 1991  Michael Tiemann  (tiemann at rtl.cygnus.com)
  101.  
  102.     * cplus-typeck.c (compparms): Deal with STRICT == 3.
  103.     * cplus-search.c (get_first_matching_virtual): Call `compparms' with
  104.     STRICT == 3.
  105.  
  106.     * cplus-typeck.c (c_expand_return): Fix up parameters to
  107.     `convert_for_initialization'.
  108.  
  109.     * cplus-lex.c (operator_name_string): Don't abort if we cannot find
  110.     a operator name for NAME.  Instead, return identifier for
  111.     <invalid operator>.
  112.  
  113. Sat Aug 17 16:55:10 1991  Michael Tiemann  (tiemann at rtl.cygnus.com)
  114.  
  115.     * Clean up 1.40 beta for release.  This means merging version 2's
  116.     start_function/finish_function actions, and the version 2 handling
  117.     of cleanups in stmt.c.
  118.  
  119. Sun Jul 28 12:10:25 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  120.  
  121.     * cplus-decl.c (finish_decl): Don't build a cleanup for an variable
  122.     that is TREE_EXTERNAL.
  123.  
  124.     * cplus-decl.c (xref_tag): Check that CLASSTYPE_VIAs is non-zero
  125.     before calling free.
  126.  
  127.     * cplus-typeck.c (build_modify_expr): We don't need to build a
  128.     SAVE_EXPR for a WITH_CLEANUP_EXPR.
  129.     (unary_complex_lvalue): For good measure, know how to deal with a
  130.     WITH_CLEANUP_EXPR inside a SAVE_EXPR.
  131.  
  132.     * cplus-decl.c (grok_reference_init): Fix initialization of a base
  133.     reference from a derived object.  This was broken by the May 26
  134.     change.
  135.  
  136. Thu Jul  4 13:28:04 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  137.  
  138.     * cplus-cvt.c (build_up_reference): Know how to build up references
  139.     to SAVE_EXPRs.
  140.  
  141.     * cplus-typeck.c (build_modify_expr): Don't build a SAVE_EXPR for a
  142.     NEW_EXPR.
  143.  
  144. Mon Jul  1 05:03:40 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  145.  
  146.     * cplus-typeck.c (comptypes): Only treat enums and unsigned types as
  147.     "the same" if STRICT < 0.
  148.  
  149. Sun Jun 30 11:42:36 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  150.  
  151.     * cplus-typeck.c (actualparameterlist): If TREE_TYPE of an
  152.     uninstantiated member function is NULL_TREE, then it cannot be
  153.     instantiated.
  154.  
  155.     * cplus-type2.c (build_functional_cast): Don't loop forever if
  156.     PARMS == NULL_TREE.
  157.  
  158.     * cplus-decl.c (grok_ctor_properties): Use CTYPE instead of
  159.     CURRENT_CLASS_NAME in case the latter is not set properly for the
  160.     error message.
  161.  
  162.     * cplus-tree.c (build_cplus_new): Take new parameter
  163.     WITH_CLEANUP_P.  All callers changed.
  164.  
  165.     * cplus-cvt.c (convert_to_reference): If we need to create a
  166.     temporary object for a reference, return a reference to the
  167.     temporary, not the temporary itself.
  168.     (build_default_binary_type_conversion): Test that TYPE[12]
  169.     variables are AGGR_TYPE before referencing their
  170.     TYPE_HAS_*_CONVERSION fields.
  171.  
  172.     * cplus-typeck.c (build_component_ref): Handle destructors.
  173.  
  174.     * cplus-typeck.c (build_modify_expr): Use `save_expr', not
  175.     `stabilize_reference' to keep NEWRHS being evaluated multiple
  176.     times in aggregate initializations.
  177.  
  178.     * expr.c (expand_expr): Handle BLKmode SAVE_EXPRs.
  179.  
  180. Sat Jun 29 12:52:03 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  181.  
  182.     * cplus-typeck.c (build_component_ref): Give error message when
  183.     use tries to use ((D *)0)->X as an expression when D is a derived
  184.     class and X comes from a base class.
  185.  
  186. Sat May  4 12:47:21 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  187.  
  188.     * version.c: Version 1.39.1 released.
  189.  
  190.     * cplus-decl2.c (flag_minimal_debug): Default to 0 instead of 1.
  191.     * dbxout.c (whole file): Revert to 1.37.1 version.  The features
  192.     that were attempted are correctly implementated in GNU C++ version
  193.     2.0 (not yet released).
  194.  
  195. Sun Jan 13 17:48:13 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
  196.  
  197.     * version.c: Bump version number to 1.38.0.  Lots of work has been
  198.     done on GNU C++ between August and January--but that work has been
  199.     done to version 2.0, not to version 1.
  200.  
  201. Thu Aug 23 10:30:10 1990  Michael Tiemann  (tiemann at cygnus.com)
  202.  
  203.     * cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT.
  204.  
  205. Sun Aug 19 09:58:16 1990  Michael Tiemann  (tiemann at cygnus.com)
  206.  
  207.     * stmt.c: Fixes from 2.0 for fixup_goto incorporated here.
  208.  
  209.     * cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL
  210.     of DECL_CONTEXT (FN).  TREE_EXTERNAL is not meaningful for types.
  211.  
  212. Wed Aug 15 15:50:36 1990  Michael Tiemann  (tiemann at cygnus.com)
  213.  
  214.     * dbxout.c (dbxout_type): Skip past const and volatile qualifiers
  215.     that might appear in method names.
  216.  
  217. Mon Aug 13 10:14:37 1990  Michael Tiemann  (tiemann at cygnus.com)
  218.  
  219.     * cplus-decl2.c (flag_minimal_debug): Now is default is
  220.     -fflag-minimal-debug.
  221.  
  222.     * cplus-tree.c (virtual_member): Return the assoc of a non-virtual
  223.     basetype that comes from a virtual baseclass.  Changed callers
  224.     which used to call `value_member' to call virtual_member instead.
  225.  
  226. Mon Aug  6 06:44:07 1990  Michael Tiemann  (tiemann at cygnus.com)
  227.  
  228.     * dbxout.c (dbxout_symbol): Send out tags before sending out
  229.     types.  Also, handle getting rtl from inline functions.
  230.     * dbxout.c (dbxout_parms): Get rtl from inline functions.
  231.     * dbxout.c (dbxout_reg_parms): Ditto.
  232.  
  233. Sun Aug  5 00:04:08 1990  Michael Tiemann  (tiemann at cygnus.com)
  234.  
  235.     * Merged `g++field.tar.Z' from Brown.  Thanks to Steve
  236.     Reiss (spr@cs.brown.edu) for these changes.
  237.  
  238.     * Merged `g++-for-pmax.diffs' from foobar.colorado.edu.
  239.     Thanks to Dirk Grunwald (grunwald@foobar.colorado.edu)
  240.     for making G++ work on the PMAX.
  241.  
  242.     * cplus-decl2.c (grokfield): It is no longer legal to specify
  243.     the initializer for a static const member in the class
  244.     declaration.  Dealing with default initializers is basically
  245.     impossible.
  246.  
  247.     * cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR
  248.     until it is in fact an address.  This allows us to call
  249.     destructors on the return values of function calls.
  250.  
  251.     * cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which
  252.     led to infinite recursion (since we did not reduce the types
  253.     before we recursed).
  254.  
  255.     * cplus-lex.c (check_newline): Make `#pragma implementation' more
  256.     forgiving.
  257.  
  258.     * cplus-init.c (expand_aggr_init): Changed Jan 20th change so that
  259.     we test whether TYPE has a constructor defined, and we do not test
  260.     at all whether INIT was from a GNU constructor expression or not.
  261.  
  262.     * cplus-typeck.c (build_modify_expr_1): Don't return
  263.     `error_mark_node' unless there really was an error.  If there is
  264.     no work to do, return `integer_zero_node'.
  265.  
  266.     * cplus-class.c (propagate_basetype_offsets): Count the space
  267.     between baseclasses, not just the space they occupy.
  268.  
  269.     * cplus-typeck.c (commontype): Don't drop the exceptions that are
  270.     raised by functions and methods.
  271.  
  272.     * cplus-cvt.c (convert_to_real): Fix if/else level problem in
  273.     case where EXPR is of aggregate type.
  274.  
  275.     * cplus-decl.c (finish_decl): Give users a chance to set a
  276.     breakpoint before the initialization of an object takes place.
  277.  
  278.     * cplus-class.c (build_method_call): If the function we get is not
  279.     directly from the object we have, call `convert_pointer_to' if the
  280.     object uses multiple inheritance or virtual baseclasses.
  281.  
  282.     * cplus-typeck.c (build_binary_op_nodefault): Don't call
  283.     `convert_to_pointer' with an argument that might be
  284.     the integer zero.
  285.  
  286.     * cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT
  287.     in RESULT_DECLs as well.
  288.  
  289.     * cplus-init.c (build_vec_delete): Don't forget to deallocate the
  290.     container if requested.  Really use AUTO_DELETE and
  291.     AUTO_DELETE_VEC with the same interpretation as `build_delete'
  292.     gives to its AUTO_DELETE parameter.
  293.  
  294. Sat Aug  4 21:24:04 1990  Michael Tiemann  (tiemann at cygnus.com)
  295.  
  296.     * varasm.c (assemble_variable): Hack our way around the problem
  297.     that static class members look like initialized variables for the
  298.     purposes of establishing FIRST_GLOBAL_OBJECT_NAME.
  299.  
  300.     * cplus-lex.c (reinit_parse_for_method): Give error message for
  301.     common mistake of forgetting the function body.
  302.  
  303.     * cplus-typeck.c (build_component_ref): Make better error message
  304.     when field is not found.
  305.  
  306.     * cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from
  307.     members as well.
  308.  
  309.     * cplus-typeck.c (c_expand_return): Give warning about returning
  310.     non-lvalues that come from functional casts.
  311.  
  312.     * cplus-search.c (get_base_distance): Changed to follow leftmost
  313.     path only when PARENT == TYPE_MAIN_VARIANT (PARENT).
  314.  
  315.     * cplus-class.c (modify_vtable_entries): Call get_base_distance
  316.     with 0 path_ptr, since we do not appear to use the path computed.
  317.  
  318. Sun Jul 22 12:04:43 1990  Michael Tiemann  (tiemann at cygnus.com)
  319.  
  320.     * cplus-except.c (cplus_expand_end_except): If the user gives a
  321.     default handler, the exception is considered caught in that
  322.     handler.
  323.     * cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT
  324.     case.
  325.  
  326.     * cplus-decl.c (finish_decl): Don't emit cleanups twice.
  327.  
  328.     * cplus-class.c (finish_struct_bits): Don't call
  329.     `fixup_vbase_offsets'.
  330.     * cplus-tree.c (fixup_vbase_offsets): #if 0 this function.
  331.  
  332.     * expr.c (expand_expr): Bug fix from Stephen Pope in LOOP_STMT
  333.     handling of local variables.
  334.  
  335.     * cplus-cvt.c (build_default_binary_type_conversion): Handle
  336.     arguments which are REFERENCE_TYPE.
  337.  
  338.     * cplus-method.c (prepare_inline): Set DECL_CONTEXT of this
  339.     function's parameters.
  340.  
  341.     * cplus-decl.c (grokfndecl): When adding a new virtual function
  342.     entry, RAISES may change a second time.
  343.  
  344. Thu Jul  5 10:44:39 1990  Michael Tiemann  (tiemann at masham)
  345.  
  346.     * cplus-decl2.c (grokfield): Static consts need not be initialized
  347.     in the class definition.
  348.  
  349. Mon Jul  2 06:12:49 1990  Michael Tiemann  (tiemann at masham)
  350.  
  351.     * cplus-init.c (resolve_offset_ref): If BASETYPE is not a base
  352.     type for the current class, give error and return.
  353.  
  354. Sun Jul  1 00:18:47 1990  Michael Tiemann  (tiemann at masham)
  355.  
  356.     * cplus-decl.c (finish_function): Throw away more code if we have
  357.     an inline function from the interface.
  358.  
  359.     * dbxout.c (dbxout_tags): Further reduce the amount of debugging
  360.     information written out for class types.
  361.  
  362.     * cplus-class.c (add_virtual_function): Set DECL_VINDEX from the
  363.     virtual function which comes from the vtable shared by
  364.     CURRENT_CLASS_TYPE, if possibe.
  365.  
  366.     * cplus-typeck.c (build_binary_op): Call `default_conversion'
  367.     after doing type instantiation.
  368.  
  369.     * cplus-init.c (build_new): New 2.0 interpretation: `new int (10)'
  370.     means allocate an int, and initialize it with 10.
  371.  
  372.     * cplus-init.c (emit_base_init): Completion of fix for virtual
  373.     function table initialization.  @@ BTW, this may now cause extra
  374.     virtual function table initializations.  They will all be correct,
  375.     but they may also be redundant.  GCC's optimizer doesn't know how
  376.     to remove even the simplest such redundancy.
  377.  
  378. Sat Jun 30 13:54:30 1990  Michael Tiemann  (tiemann at masham)
  379.  
  380.     * cplus-class.c (finish_base_struct): Store BASETYPE in the
  381.     VFIELDS chain (in its TREE_TYPE).
  382.  
  383. Fri Jun 29 09:26:17 1990  Michael Tiemann  (tiemann at masham)
  384.  
  385.     * cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the
  386.     type that caused this vtable to be defined in DECL_CONTEXT
  387.     * cplus-search.c (bfs_unmark_finished_struct): Work around
  388.     DECL_CONTEXT conflict for vtables.  @@ NOT A SOLUTION.
  389.  
  390.     * cplus-lex.c: Extend meaning of `#pragma implementation'
  391.     to allow files to `implement' types from general headers.
  392.  
  393. Thu Jun 28 17:35:04 1990  Michael Tiemann  (tiemann at teacake)
  394.  
  395.     * cplus-typeck.c (build_vbase_vtables_init): Fixed typo in code
  396.     that bashes LHS references.
  397.  
  398. Wed Jun 27 00:12:24 1990  Michael Tiemann  (tiemann at masham)
  399.  
  400.     * cplus-decl.c (pushdecl): To warn about parameter shadowing, must
  401.     look two levels up, not one.
  402.  
  403.     * cplus-search.c (build_vbase_vtables_init): Add new parameter
  404.     CTOR_P which says whether we can use computed offsets to store
  405.     vtables into virtual sub-objects, or whether we should use
  406.     existing vbase pointers.
  407.  
  408.     [Wrong fix: * cplus-cvt.c (convert_from_reference): Don't convert
  409.     from a reference to an incomplete type.]
  410.     * cplus-typeck.c (build_modify_expr): Give error if using a
  411.     reference to an incomplete type.
  412.  
  413.     * cplus-class.c (pushclass): Eliminate fencepost error.  Also,
  414.     realloc allocation unit is byte, not whatever the type of the
  415.     array happens to be!
  416.  
  417. Tue Jun 26 04:28:00 1990  Michael Tiemann  (tiemann at masham)
  418.  
  419.     * expr.c (expand_expr): Mark all {VAR,FUNCTION,CONST}_DECL nodes
  420.     that go through `expand_expr' as used.
  421.  
  422.     * cplus-dem.c (do_type): Handle "long long" (encoded as 'x').
  423.  
  424. Mon Jun 25 01:39:53 1990  Michael Tiemann  (tiemann at masham)
  425.  
  426.     * dbxout.c (dbxout_type): Fix confusion that was causing
  427.     debugging information about constructors (for classes which did
  428.     not have destructors) to be omitted.  Also, simplify some code.
  429.  
  430. Sat Jun 23 12:32:38 1990  Michael Tiemann  (tiemann at masham)
  431.  
  432.     * cplus-lex.c (interface_strcmp): Fix braino.
  433.  
  434.     * cplus-decl.c (finish_function): Make all virtual function table
  435.     pointers point to CURRENT_CLASS_TYPE's virtual function tables.
  436.  
  437. Fri Jun 22 08:28:07 1990  Michael Tiemann  (tiemann at masham)
  438.  
  439.     * cplus-init.c (build_member_call): Handle case where NAME refers
  440.     to a member (instead of a member function) and try calling
  441.     overloaded CALL_EXPR.
  442.  
  443.     * cplus-decl.c (maybe_build_cleanup): If a destructor is defined
  444.     for the type, the destructor will take care of deleting all the
  445.     virtual baseclasses.
  446.  
  447.     * cplus-init.c (emit_base_init,expand_recursive_init_1):
  448.     Initialize virtual function table pointers of non-leftmost,
  449.     non-virtual baseclasses. 
  450.  
  451.     * cplus-class.c (ideal_candidate): Each TREE_VALUE (TTA) must
  452.     be reset from TREE_PURPOSE (TTA), whether or not that particular
  453.     TREE_VALUE was the result of a type conversion for the particular
  454.     candidate we are returning--the TREE_VALUE may have been trashed
  455.     by a (failed) type conversion for some other candidate.
  456.  
  457.     * cplus-typeck.c (c_expand_result): Set TREE_VOLATILE bits of
  458.     RESULT when initializing a temporary.
  459.  
  460. Thu Jun 21 09:14:06 1990  Michael Tiemann  (tiemann at teacake)
  461.  
  462.     * cplus-lex.c (check_newline): Handle case where #pragma
  463.     interface/implementation is given, but no #line precedes it.
  464.  
  465.     * cplus-decl.c (start_function): If DECL1 is an inline function
  466.     belonging to an implemenation (as opposed to an interface), make
  467.     it public.
  468.  
  469. Tue Jun 19 13:55:13 1990  Michael Tiemann  (tiemann at teacake)
  470.  
  471.     * version.c: Changed version number to 1.37.2 alpha 2.
  472.  
  473. Fri Jun 15 03:19:50 1990  Michael Tiemann  (tiemann at masham)
  474.  
  475.     * cplus-search.c: No longer any need for VBASE_CHAR_STAR.  Use
  476.     VBASE_DECL_PTR in its stead.
  477.  
  478.     * cplus-search.c (dfs_init_vbase_pointers): Use values computed in
  479.     CLASSTYPE_SEARCH_SLOT when casting to virtual baseclasses.  Only
  480.     call `convert_pointer_to' in this function when we will *not* be
  481.     going through a virtual baseclass pointer.  The change was needed
  482.     because we might have a class hierarchy with multiple virtual
  483.     baseclasses, and in an effort to initialize first the most-base
  484.     virtual baseclass, the compiler would generate code that would
  485.     errantly try to get there via a not-yet-initilized intermediate
  486.     virtual baseclass pointer.
  487.  
  488.     * cplus-init.c (build_new): Don't let PENDING_SIZES be expanded
  489.     immediately during this function.  The result of calling this
  490.     function should only build tree nodes, not emit any insns.
  491.  
  492.     * cplus-decl.c (grok_enum_decls): If TYPE is not in scope, give
  493.     reasonable default behavior (instead of aborting).
  494.  
  495.     * cplus-class.c (build_method_call): Fix typo in case vtable is
  496.     not needed.
  497.  
  498. Wed Jun  6 10:13:53 1990  Michael Tiemann  (tiemann at teacake)
  499.  
  500.     * cplus-typeck.c (build_modify_expr): Stabilize LHS and RHS if
  501.     neccessary.
  502.  
  503.     * cplus-cvt.c (build_type_conversion): Don't convert to `void *'
  504.     unless this is a CONVERT_EXPR.
  505.  
  506. Tue Jun  5 07:52:36 1990  Michael Tiemann  (tiemann at gzilla)
  507.  
  508.     * cplus-class.c (finish_struct): Must set CLASSTYPE_INTERFACE_ONLY
  509.     and CLASSTYPE_VTABLE_NEEDS_WRITING bits before building the
  510.     virtual function table.
  511.  
  512.     * cplus-lex.c (interface_strcmp): Modified to discard path
  513.     prefixes before comparing filenames.
  514.  
  515. Mon Jun  4 06:32:59 1990  Michael Tiemann  (tiemann at gzilla)
  516.  
  517.     * cplus-decl.c (finish_function): Test HAVE_return.  Now needs
  518.     on insn-flags.h.
  519.     * Makefile: Depend cplus-decl.o on insn-flags.h.
  520.  
  521.     * cplus-parse.y (except_stmts): Use gotos and labels to implement
  522.     default actions instead of wrapping it in an RTL_EXPR and emitting
  523.     it at the end.  This is intended to cause the debugger less grief.
  524.  
  525. Sat Jun  2 13:45:45 1990  Michael Tiemann  (tiemann at teacake)
  526.  
  527.     * cplus-class.c (build_scoped_method_call): Give error if EXP is
  528.     not of aggregate type.
  529.  
  530.     * cplus-typeck.c (build_x_function_type): Don't be fooled by case
  531.     where parser thinks we have a method involving `this' (when we
  532.     really don't).
  533.  
  534.     * cplus-decl.c (pushdecl): Use `lang_printable_name' on T instead
  535.     of printing directly from IDENTIFIER_POINTER (NAME).
  536.  
  537.     * cplus-init.c (expand_aggr_init_1): Code which is supposed to
  538.     print error message was not, because FLAGS passed to
  539.     build_method_call were not in synch with PARMS
  540.     (LOOKUP_HAS_IN_CHARGE was accidently missing from FLAGS).
  541.  
  542.     * cplus-init.c (build_new): Fix obscure bug where a object needing
  543.     larger than word alignment was getting memory at the wrong
  544.     address.
  545.  
  546.     * expr.c (expand_expr): In LET_STMT case, expand initializers for
  547.     VARS, whether or not their RTL has already been defined.
  548.  
  549.     * cplus-class.c (instantiate_type): If there's only one function
  550.     we know about, and its global, return that.
  551.  
  552.     * cplus-decl.c (finish_decl): Check more cases for uninitialized
  553.     consts.
  554.  
  555.     * cplus-method.c (fndecl_as_string): Get past the `in_charge' node
  556.     if a constructor uses virtual baseclasses.
  557.  
  558.     * cplus-init.c (build_delete): If we are destroying base part of
  559.     the object, call with ADDR and the pointer to the base type
  560.     instead of calling with REF and the base type.  This is because
  561.     REF may not be stable (or seemingly addressable), whereas ADDR is
  562.     fine and dandy.
  563.  
  564.     * cplus-decl.c (grokdeclarator): Don't accept friend declarations
  565.     not in class definitions.
  566.  
  567.     * cplus-decl2.c (grokbitfield): Don't die if user tries to declare
  568.     a bitfield type.
  569.  
  570.     * cplus-decl.c (add_block_current_level): New function.
  571.     * cplus-parse.y (except_stmts): In DEFAULT case, if `compstmt' was
  572.     empty, cons up a block (a LET_STMT) and add it to the current
  573.     level.
  574.  
  575.     * cplus-parse.y (except_stmts): Set TREE_LANG_FLAG_2 of `compstmt'
  576.     when in the default section of the catch clauses.
  577.  
  578.     * All GNU C++ files: rename functions from expand_cplus_... to
  579.     cplus_expand_...
  580.  
  581.     * dbxout.c (dbxout_{try,ehdecl,catch,end_catch_clauses}): New
  582.     functions to write out symbol information for exception handling.
  583.     (Based on TREE_LANG_FLAGs of blocks).
  584.  
  585.     * cplus-except.c: Added code to set TREE_LANG_FLAGs of blocks that
  586.     are returned from `poplevel'.  TREE_LANG_FLAG_1 means a try block;
  587.     TREE_LANG_FLAG_2 means a catch block; TREE_LANG_FLAG_3 means an
  588.     except block (which also means the end of the catch blocks).
  589.     * cplus-parse.y: Ditto.
  590.  
  591.     * cplus-typeck.c (build_binary_op): In addition to NE_EXPR
  592.     comparison against INTEGER_ZERO_NODE, also allow EQ_EXPR for
  593.     allowable pointer conversions.
  594.  
  595.     * cplus-cvt.c (build_type_conversion): Check that a conversion is
  596.     not ambiguous (error_mark_node) before using it immediately.
  597.  
  598.     * cplus-class.c (ideal_candidate): Don't quit immediately if the
  599.     parameters of the derived conversion to not match the parameters
  600.     of the base conversion.
  601.  
  602. Tue May 22 06:06:38 1990  Michael Tiemann  (tiemann at gzilla)
  603.  
  604.     * cplus-cvt.c (convert_from_reference): No longer try to optimize
  605.     case of pulling known value from reference.  We may want to do
  606.     this later, but it's not worth debugging now.
  607.  
  608.     * cplus-decl.c (grok_reference_init): Only build temporary for
  609.     reference initialization if the reference type is `const'.
  610.     (New ANSI C++ rules).  Also, change interface to return `void',
  611.     since it was always returning 0.  Change caller to set INIT to 0
  612.     after calling `grok_reference_init'.
  613.  
  614. Fri May 18 14:05:38 1990  Michael Tiemann  (tiemann at teacake)
  615.  
  616.     * cplus-class.c (build_vbase_path): Avoid crash in case syntax
  617.     errors got things confused and we can't find our virtual
  618.     baseclass.
  619.  
  620. Mon May 14 07:52:22 1990  Michael Tiemann  (tiemann at gzilla)
  621.  
  622.     * cplus-class.c (build_method_call): Don't use a virtual function
  623.     table if INSTANCE is manifestly `this' in constructor or
  624.     destructor.
  625.  
  626.     * cplus-init.c (build_delete): Major interface change.
  627.     AUTO_DELETE now has additional possible values.  If in the
  628.     program, (AUTO_DELETE & 1) is non-zero, then call free on our
  629.     incoming object.  If (AUTO_DELETE & 2) is non-zero, then tear down
  630.     virtual baseclasses as well.  All callers changed.
  631.  
  632. Sun May 13 15:57:48 1990  Michael Tiemann  (tiemann at gzilla)
  633.  
  634.     * cplus-parse.y (delete cast_expr): If the type of object being
  635.     destroyed has a destructor, then give the destructor full
  636.     authority to destroy the object.  This will include destroying its
  637.     virtual base classes.  If the type does not have a destructor
  638.     (cannot have multiple or virtual baseclasses in this case), then
  639.     perform the two-step process of destroying and then deallocating
  640.     the object.  Also add LOOKUP_HAS_IN_CHARGE to the flags we use in
  641.     our call.
  642.  
  643.     * cplus-decl.c (finish_function): Make sure to call the delete
  644.     operator when finished inside a destructor.
  645.  
  646.     * cplus-init.c (build_delete): Don't change the vtables of the
  647.     object being deleted here.
  648.     * cplus-decl.c (finish_function): Change them all here (not just
  649.     virtual baseclasses).  Uses CLASSTYPE_VFIELDS to find all the
  650.     vfield slots.
  651.  
  652. Sat May 12 08:13:44 1990  Michael Tiemann  (tiemann at gzilla)
  653.  
  654.     * cplus-typeck.c (build_x_compound_expr): New function to be
  655.     called when syntactic ',' operator is parsed.
  656.     * cplus-parse.y (expr): Call `build_x_compound_expr' instead of
  657.     build_compound_expr'.
  658.     * cplus-lex.c (init_lex): Prepare to handle operator,.
  659.  
  660.     * dbxout.c (dbxout_type_fields): Write out anonymous union
  661.     elements.
  662.  
  663.     * cplus-typeck.c (build_modify_expr): Handle case of op= where
  664.     operands require type conversion to some scalar reference type.
  665.  
  666.     * cplus-parse.y (do_components): Give parse error if type
  667.     declaration in structure is not one of ENUMERAL_TYPE, UNION_TYPE,
  668.     or RECORD_TYPE.
  669.  
  670.     * cplus-typeck.c (build_modify_expr_1): Effort to save a tree node
  671.     by copying a subexpression and assigning its type got GNU C++ in
  672.     trouble.  Code now assigns the baseclasses via `get_base_ref'.
  673.     (get_base_ref): New function.
  674.  
  675.     * cplus-lex.c (interface_strcmp): New function.  Handle all files
  676.     whose prefix matches the initial file's prefix.  A prefix in this
  677.     case is the string of characters up to the first `.'.
  678.  
  679.     * cplus-decl.c (grok_reference_init): If the type of the
  680.     initializer has the same code as the type of the reference,
  681.     convert the initializer to the reference's target type.  This
  682.     permits people to say things like `short &sr = 10;'.
  683.  
  684.     * cplus-cvt.c (convert_to_reference): Don't convert types whose
  685.     sizes or codes are different (if both are non-aggr type).
  686.  
  687.     * cplus-typeck (build_binary_op_nodefault): Call
  688.     `common_base_type' when comparing pointers with EQ_EXPR or
  689.     NE_EXPR.
  690.  
  691.     * cplus-typeck.c (build_conditional_expr): if TYPE1 and TYPE2
  692.     share a common ancestor, then convert to this type instead of
  693.     giving type mismatch error.
  694.     (common_base_type): New function.
  695.  
  696. Fri May  4 00:13:44 1990  Michael Tiemann  (tiemann at teacake)
  697.  
  698.     * cplus-decl2.c (finish_file): TREE_PUBLIC is enough to cause
  699.     vtable to be written out if WRITE_VIRTUALS > 0.
  700.  
  701.     * cplus-class.c (prepare_fresh_vtable): Set TREE_PUBLIC and
  702.     TREE_EXTERNAL here according to CLASSTYPE_VTABLE_NEEDS_WRITING, 
  703.     etc.
  704.  
  705.     * cplus-typeck.c (commonparms): Free space used by common
  706.     parameter list if there were no changes needed to merge P1 and P2.
  707.  
  708. Thu May  3 22:56:46 1990  Michael Tiemann  (tiemann at teacake)
  709.  
  710.     * cplus-init.c (expand_member_init): Don't be faked out by names
  711.     which are both typedef'd and which are class members.  In the
  712.     future, we need to handle the whole namespace problem better, but
  713.     for now, if it doesn't look like a base type, treat it as a
  714.     member.
  715.  
  716.     * cplus-typeck.c (commonparms): New function; consists of code
  717.     split out from `commontype'.
  718.     * cplus-decl.c (grokfndecl): Call `commonparms' to merge default
  719.     parameter information from base class into derived class virtual
  720.     function.
  721.  
  722. Wed May  2 22:28:51 1990  Michael Tiemann  (tiemann at teacake)
  723.  
  724.     * dbxout.c (dbxout_type): Don't convert DECL_OFFSET (TYPE_NAME (TYPE)) 
  725.     to bits from bytes--it is already in bits.
  726.  
  727. Sun Apr 29 00:01:56 1990  Michael Tiemann  (tiemann at teacake)
  728.  
  729.     * cplus-decl2.c (finish_file): Continue with substitution of
  730.     `build' with `build1' where appropriate.
  731.     * cplus-init.c (various places): Ditto.
  732.  
  733. Sat Apr 28 14:32:42 1990  Michael Tiemann  (tiemann at gzilla)
  734.  
  735.     * cplus-decl.c (maybe_build_cleanup): Call `build1' instead of
  736.     `build'.
  737.     * cplus-expr.c (cplus_expand_expr): Ditto.
  738.     * expr.c (various places): Ditto.
  739.     * cplus-typeck.c (Ditto): Ditto.
  740.  
  741.     * New strategies for saving storage and time:
  742.     * cplus-tree.c (list_hash_lookup_or_cons): Look into VALUE to see
  743.     if we have a list of the kind we want.  If we don't put the list
  744.     into HASH_LIST_TABLE.
  745.     * cplus-tree.c (build_decl_list_1): Same strategy, but cons
  746.     a temporary node if we don't.
  747.     * cplus-parse.y: Call `build_decl_list_1' where profitable.
  748.     * cplus-decl.c (grokdeclarator): Handle missing declarator names
  749.     more gracefully.
  750.     * cplus-decl2.c (groktypefield): Handle a RECORD_TYPE in
  751.     DECLSPECS.
  752.  
  753. Thu Apr 26 18:25:31 1990  Michael Tiemann  (tiemann at teacake)
  754.  
  755.     * Merged changes to make #pragma dump and -fundump-... work with
  756.     #pragma interface and #pragma implementation.  Also, use mmap on
  757.     Sun instead of reading all bits from a dumped file.
  758.  
  759. Wed Apr 25 10:06:44 1990  Michael Tiemann  (tiemann at teacake)
  760.  
  761.     * toplev.c (rest_of_compilation): Rewire inline logic to avoid
  762.     most calls to `save_for_inline'.
  763.     * integrate.c (save_for_outline): New function; saves functions
  764.     which are normally inline, but may need to be outlined later.
  765.  
  766.     * cplus-tree.c (layout_basetypes): Clear CLASSTYPE_VIA_VIRTUAL if
  767.     BASETYPE is incomplete.
  768.  
  769.     * cplus-tree.h: Change respresentation of `type_lang_specific' to
  770.     keep conversions in array rather than in separate variables.
  771.     * cplus-tree.h: Use enum conversion_type to index into the
  772.     conversion array.
  773.     * cplus-class.c: Replace random logic with loop that iterates
  774.     across conversion types.
  775.  
  776. Tue Apr 24 00:36:02 1990  Michael Tiemann  (tiemann at teacake)
  777.  
  778.     * cplus-decl{2}.c: Finally get #pragma interface and #pragma
  779.     implemenetation working.
  780.  
  781.     * cplus-{decl2,lex,init,method}.c: "__user_new" is gone.  It has
  782.     been replaced uniformly with OPERATOR_NEW_FORMAT.
  783.     * cplus-init.c (build_new): Parameter USER_PARMS is renamed
  784.     PLACEMENT.
  785.  
  786.     * cplus-parse.y (primary): Handle case where `operator_name' is an
  787.     here-to-fore unknown operator.
  788.     * cplus-class.c (build_instantiated_decl): Pass &EXP instead of
  789.     &TREE_VALUE (EXP) to `build_operator_fnname'.  All other calls to
  790.     that function pass the address of an OP_IDENTIFIER.
  791.  
  792.     * cplus-decl.c (finish_function): Call `convert_pointer_to_vbase'
  793.     instead of `convert_pointer_to'; this saves an abort when the
  794.     lattice contains both virtual and non-virtual versions of a
  795.     baseclass we are looking for.
  796.  
  797.     * cplus-decl2.c (setup_vtable_pointer): Cast initializer to
  798.     CURRENT_VTABLE_DECL in case it is more basic than we want it.
  799.  
  800.     * cplus-typeck.c (build_c_cast): Handle casting one reference type
  801.     to another.
  802.  
  803.     * cplus-cvt.c (build_type_conversion): More creativity in ways of
  804.     finding type conversions.
  805.  
  806.     * cplus-typeck.c (build_binary_op): Code simplified.
  807.  
  808.     * cplus-class.c (build_vbase_path): Incorprate Vasta's fix which
  809.     resets CODE to PLUS_EXPR once we have used it.  Otherwise, OFFSET
  810.     might be twice negated.
  811.  
  812.     * cplus-typeck.c (build_modify_expr): Since we don't know about
  813.     potential aliases, unless -felide-constructors is set, treat
  814.     "x = F(y);" as "t = F(y), x = t" if x's TREE_TYPE is
  815.     TREE_ADDRESSABLE.
  816.  
  817.     * cplus-decl.c (finish_function): If CLEANUP_LABEL is non-zero,
  818.     effectively do a jump to RETURN_LABEL in case the user has -Wall
  819.     turned on.  This causes the right things to happen to
  820.     NOTE_INSN_FUNCTION_END.
  821.  
  822.     * cplus-decl.c (grokvardecl): Give error if static member is
  823.     multiply initialized.  `duplicate_decls' will never be called for
  824.     this case, hence it cannot warn us.
  825.  
  826.     * cplus-decl.c (grokdeclarator): CONSTP is meaningless for
  827.     REFERENCE_TYPEs.
  828.  
  829.     * cplus-typeck.c (actualparameterlist): Don't make an OFFSET_REF
  830.     of something that is already an OFFSET_REF.
  831.  
  832. Sun Apr 22 18:38:35 1990  Michael Tiemann  (tiemann at teacake)
  833.  
  834.     * cplus-method.c (build_opfncall): ARG3 holds the PLACEMENT of a
  835.     user-defined new operator.
  836.  
  837.     * cplus-init.c (build_new): Interface change now takes
  838.     USE_GLOBAL_NEW as parameter.  All callers changed.
  839.  
  840. Wed Apr 18 10:10:09 1990  Michael Tiemann  (tiemann at teacake)
  841.  
  842.     * cplus-search.c (dfs_record_inheritance): Use TYPE_MAIN_VARIANT
  843.     of BASECLASS.
  844.  
  845.     * cplus-search.c (report_ambiguous_mi_virtuals): Don't crash if
  846.     MI_VMATRIX is not fully populated (i.e., there are zero entries in
  847.     between non-zero ones).
  848.  
  849. Fri Apr 13 09:07:36 1990  Michael Tiemann  (tiemann at suntana)
  850.  
  851.     * expr.c (expand_call): Don't defer popping if this is a call to
  852.     setjmp, longjmp (or a related function).
  853.  
  854. Wed Apr 11 09:49:33 1990  Michael Tiemann  (tiemann at gzilla)
  855.  
  856.     * cplus-typeck.c (build_component_ref): When taking address of
  857.     bound member function, don't forget to convert DATUM to
  858.     DECL_VCONTEXT of FIELD.
  859.  
  860. Sat Apr  7 12:49:13 1990  Michael Tiemann  (tiemann at teacake)
  861.  
  862.     * cplus-search.c (get_first_matching_virtual): Don't crash if
  863.     redeclaring a virtual function `static'.
  864.  
  865. Thu Apr  5 04:45:13 1990  Michael Tiemann  (tiemann at teacake)
  866.  
  867.     * cplus-class.c (finish_struct): Remove warning about structures
  868.     which have no data members.
  869.  
  870.     * expr.c (expand_expr): Do not call `use_variable' on a TYPE_DECL
  871.     of STMT_VARs.
  872.  
  873. Tue Apr  3 07:48:47 1990  Michael Tiemann  (tiemann at teacake)
  874.  
  875.     * cplus-typeck.c (c_expand_start_case): Make this function handle
  876.     expressions that can be converted to integer types via type
  877.     conversion operators.
  878.  
  879.     * cplus-decl.c (start_function): If there was a previous `extern "C"'
  880.     declaration when a function is defined in C++ langauge scope, give
  881.     error message if argument types line up, but return types do not.
  882.  
  883. Mon Apr  2 13:38:22 1990  Michael Tiemann  (tiemann at teacake)
  884.  
  885.     * cplus-lex.c (check_newline): Recognize `#pragma interface'.
  886.     * cplus-tree.c (lang_output_debug_info): Implement action for
  887.     `#pragma interface'.
  888.     * cplus-decl{2}.c: Various hacks to make this work.
  889.  
  890.     * cplus-class.c (finish_struct): Added new slots for
  891.     CLASSTYPE_INT_CONVERSION and CLASSTYPE_REAL_CONVERSION to simplify
  892.     picking up these conversions when narrower or wider conversions
  893.     (than the default type) are provided.
  894.  
  895.     * cplus-cvt.c (build_up_reference): When building `X&' via an
  896.     `operator X ()', build it into a temporary, and return the
  897.     COMPOUND_EXPR which first computes the conversion and second has
  898.     the value of the temporary's address.
  899.  
  900. Sun Apr  1 17:28:35 1990  Michael Tiemann  (tiemann at teacake)
  901.  
  902.     * cplus-decl.c (build_enumerator): Handle case where VALUE is a
  903.     constant VAR_DECL.
  904.  
  905. Fri Mar 30 02:16:34 1990  Michael Tiemann  (tiemann at arkesden)
  906.  
  907.     * cplus-class.c (build_{scoped_}method_call): Handle calls to
  908.     destructor according to anticipated ANSI C++ rules.  p->X::~X ()
  909.     should call destructor (without calling `operator delete').
  910.     p->~X () should do likewise, but use a virtual lookup (perhaps).
  911.  
  912.     * cplus-class.c (compute_conversion_costs): Permit conversion to
  913.     `X&' when only `operator X' exists.
  914.  
  915. Thu Mar 29 18:14:31 1990  Michael Tiemann  (tiemann at rio)
  916.  
  917.     * cplus-init.c (finish_base_init): Function changed to...
  918.     * cplus-init.c (emit_base_init): ...this.  Emit the base
  919.     initializer to BASE_INIT_INSNS, as a sequence.
  920.     * cplus-init.c (check_base_init): New function: test that member
  921.     variables are not used before they are initialized.
  922.     * All callers changed.
  923.  
  924. Wed Mar 28 17:27:37 1990  Michael Tiemann  (tiemann at teacake)
  925.  
  926.     * cplus-init.c (build_new): If space is allocated for constructor,
  927.     call `build_method_call' with flags saying that the constructor is
  928.     in charge.
  929.  
  930. Tue Mar 27 22:20:37 1990  Michael Tiemann  (tiemann at teacake)
  931.  
  932.     * cplus-init.c (build_virtual_init): Convert virtual function
  933.     table address to type of virtual function table pointer.  These
  934.     may now compare as different, since array sizes between base and
  935.     derived classes may be different.
  936.  
  937.     * cplus-parse.y (init_parse): Make room for ENDFILE, which has the
  938.     value (-1).
  939.  
  940. Mon Mar 26 09:00:27 1990  Michael Tiemann  (tiemann at teacake)
  941.  
  942.     * toplev.c (FLAG_INLINE_DEBUG): New flag to control whether
  943.     inlines get debugging information or not.
  944.     * cplus-decl2.c (LANG_F_OPTIONS): Implemented.
  945.     * integerate.c (expand_inline_functions): Implemented.
  946.     * cplus-except.c (init_exception_processing): Make it possible for
  947.     user to declare `exceptionHandlerStack' her/himself.
  948.  
  949. Sun Mar 25 05:04:06 1990  Michael Tiemann  (tiemann at teacake)
  950.  
  951.     * cplus-init.c (build_delete): Remove assertion that
  952.     CLASSTYPE_OFFSET of BASETYPE must be non-zero for baseclasses 2
  953.     through N.  The first non-virtual baseclass need not be the first
  954.     baseclass, and it will be the one with a zero offset.
  955.  
  956.     * cplus-except.c (call_to_unhandled_exception): Adjust length
  957.     argument to `build_string'.
  958.  
  959.     * cplus-dem.c: Apply James Clark's patches.
  960.  
  961.     * cplus-decl.c (start_decl): If DECL is static and non-permanent,
  962.     and DECL needs destroying, make DECL permanent.  If there are
  963.     components of DECL's type which need to be made permanent, make
  964.     them permanent as well.
  965.  
  966.     * cplus-decl.c (grokdeclarator): Fix bugoid in SCOPE_REF case.
  967.  
  968.     * cplus-decl.c (finish_decl): Wait to build CLEANUP from DECL
  969.     until after completing its array type.
  970.  
  971.     * cplus-typeck.c (build_unary_op): If ARG is an OFFSET_REF,
  972.     resolve it before trying to increment (or decrement) it.
  973.  
  974.     * cplus-class.c (finish_struct_bits): When looking for type
  975.     conversion operators, test METHOD_VEC against NULL_TREE (in case
  976.     there is a conversion from a base class, and the derived class
  977.     defines no methods).
  978.  
  979.     * cplus-cvt.c (build_up_reference): Don't try to build up a
  980.     reference to an aggregate type which is not derived from another.
  981.  
  982.     * cplus-type2.c (build_functional_cast): Fixed typo.
  983.  
  984.     * cplus-typeck.c (comptypes): Break out code for ARRAY_TYPE case.
  985.     * cplus-typeck.c (comp_array_types): Function for that code.
  986.     * cplus-typeck.c (comptypes,comp_target_types): Call
  987.     `comp_array_types' for ARRAY_TYPE case.
  988.  
  989.     * cplus-class.c (build_method_call): Don't give error if
  990.     LOOKUP_COMPLAIN is not in FLAGS.
  991.  
  992.     * cplus-init.c (expand_aggr_init_1): When looking for
  993.     constructors, if XXREF_INIT_POSSIBLE is LOOKUP_SPECULATIVELY,
  994.     clear out LOOKUP_COMPLAIN, since failure of a particular
  995.     constructor can be managed by performing X(X&) initialization.  If
  996.     that fails, the caller of that attempted initialization will give
  997.     the error message.
  998.  
  999.     * cplus-decl2.c (coerce_delete_type): Simplify code, and make it
  1000.     work in the presence of delete type with TYPE_ARG_TYPES (type) ==
  1001.     NULL_TREE.
  1002.  
  1003.     * tree.c (array_type_nelts): Give error if this function is called
  1004.     with incomplete type.
  1005.  
  1006. Sat Mar 24 19:23:19 1990  Michael Tiemann  (tiemann at teacake)
  1007.  
  1008.     * stmt.c (expand_function_start): Emit note that parms are in
  1009.     their homes.
  1010.  
  1011.     * cplus-typeck.c (build_unary_op): Function types can have unary
  1012.     `!' applied to them.
  1013.  
  1014.     * stmt.c (expand_expr_stmt): Don't warn about unused expressions
  1015.     that are explicitly cast to void.
  1016.  
  1017. Sat Mar 10 05:23:36 1990  Michael Tiemann  (tiemann at teacake)
  1018.  
  1019.     * cplus-lex.c (reinit_parse_for_method): Try to give user some
  1020.     clue as to where the problem is if method declaration looks wrong.
  1021.  
  1022.     * Makefile: Better handling of cadillac vs non-cadillac
  1023.     compilation.
  1024.     * cplus-cadillac.c: Updates for latest protocol.
  1025.  
  1026.     * cplus-cvt.c (build_type_conversion): Don't crash if EXPR is
  1027.     ERROR_MARK_NODE.
  1028.  
  1029.     * cplus-class.c (build_method_call): Check for return of
  1030.     `error_mark_node' from call to `build_new'.
  1031.  
  1032. Fri Mar  9 11:29:04 1990  Michael Tiemann  (tiemann at teacake)
  1033.  
  1034.     * cplus-typeck.c (build_modify_expr): Check TREE_READONLY bit if
  1035.     reference type.
  1036.  
  1037. Mon Mar  5 14:54:12 1990  Michael Tiemann  (tiemann at teacake)
  1038.  
  1039.     * integrate.c (expand_inline_function): Forget about register
  1040.     constancy if somebody clobbers a part of the register via a
  1041.     STRICT_LOW_PART, SUBREG, SIGN_EXTRACT or ZERO_EXTRACT operation.
  1042.  
  1043.     * integrate.c (output_inline_function): LAST was unitialized due
  1044.     to #if 0.  Moved #if 0 inside of loop.
  1045.  
  1046. Sun Mar  4 04:12:53 1990  Michael Tiemann  (tiemann at teacake)
  1047.  
  1048.     * cplus-init.c (build_new): Unless eliding constructors, we must
  1049.     go through constructors if they are defined.
  1050.  
  1051.     * cplus-decl.c (start_function): Protect binding level of parms by
  1052.     calling `pushlevel' in here...
  1053.     * cplus-decl.c (finish_function): ...instead of here.  Make sure
  1054.     we call corresponding `poplevel' on both constructor paths.
  1055.  
  1056.     * cplus-init.c (finish_base_init): If handling exceptions for
  1057.     Spring, must always have IN_CHARGE_IDENTIFIER doing its thing for
  1058.     constructors.
  1059.  
  1060.     * cplus-except.c (finish_exception_decl): Don't pretend that CTOR
  1061.     is not a constructor.
  1062.  
  1063.     * cplus-decl.c (start_function): Force constructors to `return'
  1064.     via CTOR_LABEL.
  1065.  
  1066.     * cplus-decl.c (init_decl_processing): If handling exceptions for
  1067.     Spring, set FLAG_THIS_IS_VARIABLE to 2.
  1068.  
  1069.     * cplus-init.c (finish_base_init): Handle exceptions for Spring.
  1070.  
  1071.     * cplus-decl.c (in_parm_level_p): Function deleted.
  1072.     * cplus-decl.c (have_exceptions_p): New function.
  1073.  
  1074.     * Integrate changes for cadillac.
  1075.  
  1076. Sat Mar  3 11:52:13 1990  Michael Tiemann  (tiemann at teacake)
  1077.  
  1078.     * cplus-parse.y (stmt): Implement `reraise ep;'.
  1079.     * cplus-except.c (expand_cplus_reraise): Handle case where
  1080.     EXCEPTIONS is an exception object to be reraised.
  1081.  
  1082.     * integrate.c (copy_decl_tree): Try latest fixes for GCC 2.0 to
  1083.     improve GNU C++'s handing of inline functions.
  1084.  
  1085.     * cplus-init.c (expand_aggr_vbase_init): Delete this function
  1086.     static.
  1087.  
  1088.     * cplus-tree.h (TREE_ANON_UNION_ELEM): Use TREE_REGDECL instead of
  1089.     common.regdecl_attr.
  1090.     * cplus-tree.h (DECL_ANON_UNION_ELEM): Ditto.
  1091.     * cplus-tree.h (TREE_PARMLIST): Use `unsigned_attr' instead of
  1092.     `regdecl_attr'.
  1093.     * cplus-tree.h (TREE_VIA_PUBLIC): Use `used_attr' instead of
  1094.     `public_attr'.
  1095.     * cplus-tree.h (TREE_VIA_PROTECTED): Use `literal_attr' instead of
  1096.     `public_attr'.
  1097.     * cplus-tree.h (TREE_VIA_VIRTUAL): Ditto.
  1098.  
  1099. Thu Mar  1 19:32:03 1990  Michael Tiemann  (tiemann at teacake)
  1100.  
  1101.     * version.c: version 1.37.1 released.
  1102.  
  1103.     * integrate.c (expand_inline_function): Round up size of parm_map.
  1104.  
  1105.     * g++.texinfo: Updated to version 1.37.1, including the addition
  1106.     of a new chapter on exception handling.
  1107.  
  1108.     * ld.c: Fixed #ifdef problems introduced by Mark Ullman.
  1109.  
  1110.     * cplus-parse.y (print_parse_statistics): Modified to work in case
  1111.     YYDEBUG is not defined.
  1112.  
  1113. Wed Feb 28 09:45:09 1990  Michael Tiemann  (tiemann at teacake)
  1114.  
  1115.     * version.c: version 1.37.0 released.
  1116.  
  1117.     * HINTS: Hacked to look like an RMAIL file.
  1118.  
  1119.     * cplus-typeck.c (build_modify_expr_1): Copy virtual baseclasses
  1120.     of members.
  1121.  
  1122. Mon Feb 26 06:36:50 1990  Michael Tiemann  (tiemann at teacake)
  1123.  
  1124.     * cplus-class.c (finish_base_struct): When building B->VFIELDS,
  1125.     use precisely the right baseclass in the TREE_PURPOSE slot.
  1126.     * cplus-class.c (modify_vtable_entries): Add additional test of
  1127.     normalcy, which is that TREE_PURPOSE (VSLOTS) agree with the
  1128.     basetype that TREE_VALUE (VSLOTS) is.
  1129.  
  1130.     * cplus-decl.c (finish_decl): If ASMSPEC_TREE is non-zero, then
  1131.     zero out DECL_RTL (DECL).  Otherwise, it won't take.
  1132.  
  1133. Sun Feb 25 03:50:08 1990  Michael Tiemann  (tiemann at teacake)
  1134.  
  1135.     * cplus-typeck.c (build_modify_expr): Fix off-by-one bug in array
  1136.     assignment case.
  1137.  
  1138.     * cplus-init.c (cplus_expand_expr_stmt): Move function from here...
  1139.     * cplus-decl.c (cplus_expand_expr_stmt): ...to here.  Now we can
  1140.     handle binding-level semantics at `exprstmt' boundaries.
  1141.  
  1142.     * cplus-decl.c (lang_decode_option): Moved function from here...
  1143.     * cplus-decl2.c (lang_decode_option): ...to here.  Also moved
  1144.     flags around, as neccessary.
  1145.  
  1146.     * cplus-method.c (various places): Call    `dump_readonly_or_volatile'
  1147.     in many more places (saving 624 bytes object code).
  1148.  
  1149.     * tree.h (struct tree_common): Add `raises_attr' and define
  1150.     TREE_RAISES.
  1151.     * tree.c (build{,1}): Set TREE_RAISES bit.
  1152.     * cplus-class.c (build_method_call): Set TREE_RAISES bit.
  1153.     * cplus-cvt.c (convert_to_aggr): Ditto.
  1154.     * cplus-typeck.c (build_function_call,actualparameterlist): Ditto.
  1155.     * cplus-init.c (expand_aggr_init_1): Don't know what to do about
  1156.     TREE_RAISES, so #if 0'd out code to set it.
  1157.  
  1158.     * cplus-decl.c (struct binding_level): Add new fields
  1159.     `more_exceptions_ok' and `have_exceptions'.
  1160.  
  1161. Sat Feb 24 14:05:01 1990  Michael Tiemann  (tiemann at arkesden)
  1162.  
  1163.     * cplus-decl.c (finish_function): Move code up that handles named
  1164.     return values that got kicked out of registers (hard or pseudo).
  1165.  
  1166.     * stmt.c (expand_function_start): Failed to set TREE_REGDECL in
  1167.     the case that PARMS_HAVE_CLEANUPS was nonzero.
  1168.  
  1169.     * stmt.c (expand_goto_internal,fixup_cleanups): After running
  1170.     cleanups, fixup the stack.
  1171.  
  1172. Fri Feb 23 07:40:17 1990  Michael Tiemann  (tiemann at arkesden)
  1173.  
  1174.     * cplus-cvt.c (build_type_conversion): There is only one void
  1175.     type, so don't try looking "default" void to see if different.
  1176.  
  1177.     * cplus-except.c (expand_cplus_end_catch): Call `expand_end_catch'
  1178.     instead of `expand_escape_except'.
  1179.  
  1180.     * cplus-except.c (expand_cplus_{end_except,reraise}): In case of
  1181.     unhandled exceptions, have the program call
  1182.     `__unhandled_exception' instead of `abort'.
  1183.  
  1184.     * cplus-class.c (ideal_candidate): If the best candidate requires
  1185.     a strict subset of the user-defined type conversions of all the
  1186.     other candidates, pick it as the best.
  1187.  
  1188.     * cplus-type2.c (build_functional_cast): If both attempts to cast
  1189.     the argument failed, see why with LOOKUP_NORMAL, not
  1190.     LOOKUP_COMPLAIN.
  1191.  
  1192. Thu Feb 22 03:52:00 1990  Michael Tiemann  (tiemann at arkesden)
  1193.  
  1194.     * clpus-decl.c ({push,pop}_decl_level): Now #includes "stack.h"
  1195.     and uses `{push,pop}_stack_level'.
  1196.  
  1197.     * cplus-decl.c (hack_incomplete_structures): Now also completes
  1198.     arrays of incomplete structs.
  1199.  
  1200.     * cplus-lex.c (build_operator_fnname): Don't get faked out by
  1201.     ERROR_MARK as the TREE_CODE.
  1202.  
  1203.     * stor-layout.c (layout_{record,union}): For loops over fields,
  1204.     skip if TREE_CODE (field) != FIELD_DECL, instead of testing if ==
  1205.     CONST_DECL or VAR_DECL or TYPE_DECL etc.
  1206.  
  1207.     * cplus-decl.c (pushtag): Do gratuitous C++ typedefing even when
  1208.     in C language scope.  Sigh.
  1209.  
  1210.     * cplus-decl.c (xref_tag): Don't assume CODE == TREE_CODE (REF).
  1211.     It's not when the user redeclares REF as the wrong kind of tag.
  1212.  
  1213.     * cplus-search.c (dfs_init_vbase_pointers): Use TREE_PURPOSE of
  1214.     VBASE_INIT_RESULT to hold the type of the virtual baseclass that
  1215.     was initialized.
  1216.     * cplus-init.c (expand_aggr_vbase_init): Walk through RESULT and
  1217.     INIT_LIST in the order of CLASSTYPE_VBASECLASSES.
  1218.     * cplus-init.c (expand_aggr_vbase_init_1): New function.
  1219.  
  1220.     * cplus-decl.c (finish_function): Test CLASSTYPE_VSIZE before
  1221.     calling `build_virtual_init'.
  1222.  
  1223. to do:    fix protected squeaking through with -fsave-memoized
  1224. to do:  unify code in expand_vec_init, expand_vec_delete
  1225. to do:  for-local objects with destructors do not land in the right
  1226.     cleanup contour.
  1227. to do:  fix complicated multiple inheritance bugs that strike when
  1228.     baseclasses are not virtual, and appear at multiple sites within
  1229.     the lattice.
  1230. to do:  integrate.c vs GCC.
  1231. to do:  virtual functions for Convex and Choices
  1232. to do:  real pointers to members
  1233.  
  1234. Mon Feb 19 13:48:30 1990  Michael Tiemann  (tiemann at arkesden)
  1235.  
  1236.     * cplus-decl.c (grokdeclarator): Fix up ENUMERAL_TYPEs which are
  1237.     ANON_AGGR_NAME_P.
  1238.  
  1239.     * cplus-cvt.c (convert): If we know a type conversion applies,
  1240.     don't try for fancy constructors.
  1241.  
  1242.     * cplus-decl.c (build_enumerator): TREE_TYPE (VALUE) must always
  1243.     be INTEGER_TYPE_NODE before calling `build_binary_op_nodefault'.
  1244.  
  1245.     * cplus-decl.c (complete_array_type): Merged GCC 1.37 code.
  1246.     * integrate.c (copy_for_inline): Ditto.
  1247.     * cplus-decl.c (grokdeclarator): Ditto.
  1248.     * stor-layout.c (layout_type): Ditto.
  1249.  
  1250. Sat Feb 17 08:49:21 1990  Michael Tiemann  (tiemann at arkesden)
  1251.  
  1252.     * cplus-typeck.c (require_instantiated_type): Make non-static.
  1253.     * cplus-typeck.c (type_unknown_p): New function, returns
  1254.     truthvalue of whether the TREE_TYPE of its argument is known.
  1255.     * cplus-class.c (various places): Changed to call these functions.
  1256.  
  1257. Fri Feb 16 15:17:54 1990  Michael Tiemann  (tiemann at arkesden)
  1258.  
  1259.     * cplus-class.c (finish_struct): Cons up default destructors when
  1260.     T uses virtual baseclasses or multiple inheritance, in addition to
  1261.     the usual cases.
  1262.  
  1263.     * integrate.c (copy_rtx_and_substitute): If we were needing an
  1264.     inline target (for example, a USE of the function return result),
  1265.     and we don't have one, just cons one up.
  1266.  
  1267.     * cplus-init.c (expand_vec_init): Comparison of HOST_I against
  1268.     zero should have been >=, not >.
  1269.  
  1270.     * cplus-dem.c: Fix #defines to use bcopy, bcmp instead of the str
  1271.     functions.
  1272.  
  1273.     * cplus-cvt.c (convert): If converting to void type, check for
  1274.     possible operator void.
  1275.  
  1276.     * stmt.c (fixup_cleanups): If cleanups expand to nothing, don't
  1277.     call `reorder_insns'.
  1278.  
  1279.     * cplus-search.c ({push,pop}_stack_level): New functions.
  1280.     Abstracts functionality of pushing/popping objects to/from
  1281.     obstacks.
  1282.     * cplus-search.c ({push,pop}_search_level): Use new *_stack_level
  1283.     functions.
  1284.     * cplus-search.c ({push,pop}_type_level): Ditto.
  1285.  
  1286. Tue Feb 13 11:32:12 1990  Michael Tiemann  (tiemann at teacake)
  1287.  
  1288.     * cplus-init.c (build_delete): This function can get visibilities
  1289.     wrong if default destructors are not built (currently the case).
  1290.     As a temporary fix, pass FLAGS with LOOKUP_PROTECTED_OK for base
  1291.     destructor calls, and test LOOKUP_PROTECTED_OK when thinking about
  1292.     complaining.
  1293.  
  1294. Sun Feb 11 11:47:37 1990  Michael Tiemann  (tiemann at arkesden)
  1295.  
  1296.     * cplus-decl.c (finish_function): Don't call `build_virtual_init'
  1297.     for types which don't have virtual functions.  Similarly, don't
  1298.     call `build_delete' if it doesn't need a destructor.
  1299.  
  1300.     * cplus-init.c (finish_base_init,build_delete): When building up
  1301.     and tearing down objects' bases, build pointers to base objects
  1302.     directly rather than by calling through `convert_pointer_to',
  1303.     since ambiguity in the lattice causes it trouble.
  1304.  
  1305.     * cplus-typeck.c (build_modify_expr): Removed unneeded casts when
  1306.     building sum of base address + offset.
  1307.     * cplus-class.c (build_vbase_path): Ditto.
  1308.     * cplus-class.c (build_vfn_ref): Ditto.
  1309.     * cplus-init.c (resolve_offset_ref): Ditto.
  1310.     * cplus-init.c (build_delete): Ditto.
  1311.  
  1312.     * cplus-typeck.c (build_modify_expr): Fix parenthesis error for
  1313.     deciding whether to recurse through aggregates or not
  1314.     (TYPE_USES_VIRTUAL_BASECLASSES is not enough).
  1315.  
  1316.     * cplus-parse.y (try): Change type from TTYPE to ITYPE.
  1317.     * cplus-parse.y (stmt): Call `cplus_expand_end_try' with result of
  1318.     `try' stmt.  Now, if we wanted to, we could pass additional
  1319.     information about whether this try block is followed by an except
  1320.     stmt or a reraise clause.
  1321.     * cplus-parse.y (stmt): When processing a reraise clause, use
  1322.     ERROR_MARK_NODE as the default handler, to indicate that we
  1323.     actually have one, rather than NULL_TREE, which claims that we
  1324.     don't.
  1325.     * cplus-except.c (cplus_expand_end_except): Always try next
  1326.     handler before ending the block.
  1327.     
  1328. Sat Feb 10 13:57:28 1990  Michael Tiemann  (tiemann at teacake)
  1329.  
  1330.     * cplus-init.c (build_delete): Use `convert_pointer_to' when ADDR
  1331.     is TREE_LITERAL.
  1332.  
  1333.     * cplus-class.c (build_vfn_ref): Save intermediate result in
  1334.     SAVE_EXPR so we don't have to compute each component of virtual
  1335.     function pointer twice.  But only do this when BUILDING_CLEANUP
  1336.     is zero.
  1337.     * cplus-decl.c (maybe_build_cleanup): New global variable
  1338.     BUILD_CLEANUP is controlled by this function.
  1339.  
  1340.     * cplus-expr.c (cplus_expand_expr): Use separate CALL_TARGET and
  1341.     RETURN_TARGET, in case call to `expand_expr' returns something
  1342.     different than CALL_TARGET in NEW_EXPR case.
  1343.  
  1344. Fri Feb  9 04:00:42 1990  Michael Tiemann  (tiemann at teacake)
  1345.  
  1346.     * cplus-lex.c (getch): New function.  Encapsulates call to `getc'
  1347.     macro within function to save space.
  1348.     * cplus-lex.c (check_newline): Call `getch' instead of `getc' to
  1349.     get pragma text.
  1350.  
  1351. Mon Feb  5 13:55:33 1990  Michael Tiemann  (tiemann at arkesden)
  1352.  
  1353.     * cplus-decl.c (grokdeclarator): Don't gripe if static member has
  1354.     incomplete type.
  1355.  
  1356. Sun Feb  4 19:51:52 1990  Michael Tiemann  (tiemann at arkesden)
  1357.  
  1358.     * cplus-class.c (modify_vtable_entries): Fix failure to use
  1359.     proper initial value for OFFSET.
  1360.  
  1361.     * cplus-tree.c (layout_vbasetypes): Gross error was accidently
  1362.     causing storage to be exponentially counted!  Fixed...
  1363.  
  1364.     * cplus-decl.c (duplicate_decls): Catch case where OLDDECLS are
  1365.     some overloaded functions and NEWDECL is not a FUNCTION_DECL.
  1366.  
  1367.     * cplus-init.c (finish_base_init): If there are several members
  1368.     with the same name (from different baseclasses), get the topmost
  1369.     one.
  1370.  
  1371.     * cplus-tree.c (lang_simple_cst_equal): New function.  Callback
  1372.     for `simple_cst_equal'.
  1373.     * tree.c (simple_cst_equal): Needs new treatment for handling
  1374.     NEW_EXPR and CPLUS_NEW_EXPR.  Use call-back for latter.
  1375.     * tree.c (simple_cst_list_equal): Now non-static.
  1376.  
  1377.     * integrate.c (expand_inline_function): Use `convert_move' instead
  1378.     of `emit_move_insn' when we need to copy INLINE_TARGET back to
  1379.     TARGET.
  1380.  
  1381. Sat Feb  3 09:45:47 1990  Michael Tiemann  (tiemann at teacake)
  1382.  
  1383.     * ld.c: integrate changes from Mark Ullman which make linker
  1384.     suitable for cross linking.
  1385.  
  1386. Thu Feb  1 16:27:03 1990  Michael Tiemann  (tiemann at teacake)
  1387.  
  1388.     * cplus-expr.c (cplus_expand_expr): If TARGET is 0, generate a new
  1389.     temporary, unless MODE is BLKmode, in which case we abort.
  1390.  
  1391. Tue Jan 30 02:55:20 1990  Michael Tiemann  (tiemann at arkesden)
  1392.  
  1393.     * version.c: version 1.36.4 released.
  1394.  
  1395.     * cplus-decl.c (build_enumerator): Make it impossible to lose if
  1396.     ENUM_NEXT_VALUE is something like INTEGER_ONE_NODE.
  1397.  
  1398.     * tree.c (build_int_2): Don't need to set TREE_LITERAL here, it is
  1399.     set in `make_node'.
  1400.     * tree.c (make_node): Increment `TREE_NODE_KINDS[C_KIND]' for
  1401.     INTEGER_CST nodes.
  1402.  
  1403.     * cplus-init.c (expand_aggr_init_1): NEW_EXPR now encapsulates new
  1404.     information (due to compiler merging); lossage fixed.
  1405.  
  1406.     * case.c (various places): Replace calls to `build_int_2 (x, 0)'
  1407.     (where x == 0 or x == 1) with INTEGER_{ZERO,ONE}_NODE as
  1408.     appropriate.
  1409.  
  1410.     * cplus-typeck.c (build_component_addr): Break out code to build
  1411.     the ADDR_EXPR of a COMPONENT_REF from `build_unary_op'.
  1412.     * cplus-cvt.c (build_up_reference): Call `build_component_addr' in
  1413.     case of COMPONENT_REF.
  1414.  
  1415. Sun Jan 28 04:39:54 1990  Michael Tiemann  (tiemann at arkesden)
  1416.  
  1417.     * cplus-init.c (build_vec_delete): Set TREE_VOLATILE on BLOCK,
  1418.     LOOP, and IF_STMT, to avoid spurious warning messages about
  1419.     statements not being useful.
  1420.     * stmt.c (warn_if_unused_value): Don's warn for LOOP_STMT,
  1421.     IF_STMT, or LET_STMT.
  1422.  
  1423.     * cplus-decl.c (build_enumerator): Prepare for fact that `fold'
  1424.     might put NOP_EXPRs around everything that is not an lvalue.
  1425.  
  1426.     * cplus-method.c (build_opfncall): New parameter FLAGS.
  1427.     Don't lose unless FLAGS include LOOKUP_COMPLAIN; there's always a
  1428.     chance that a type conversion will work, after all.
  1429.     * All callers changed.
  1430.  
  1431.     * cplus-cvt.c (build_type_conversion): Permit `operator int' to
  1432.     convert when `unsigned' is wanted (provided no `operator unsigned'
  1433.     exists).  Same for `long' and `unsigned long'.
  1434.  
  1435.     * cplus-expr.c: New file.  Contains definition of new function
  1436.     `cplus_expand_expr'.
  1437.  
  1438.     * cplus-lex.c (init_lex): Initialize LANG_EXPAND_EXPR.
  1439.  
  1440.     * toplev.c (LANG_EXPAND_EXPR): New variable is pointer-to-function
  1441.     which expands language-specific tree codes.  Its default is
  1442.     `fancy_abort'.
  1443.     * cplus-tree.def (CPLUS_NEW_EXPR): New tree code.
  1444.  
  1445. Sat Jan 27 09:30:13 1990  Michael Tiemann  (tiemann at arkesden)
  1446.  
  1447.     * tree.c (decl_type_context): Handle LET_STMT.
  1448.  
  1449.     * stmt.c (expand_catch): Renaming of function
  1450.     `expand_start_catch'.  This function no longer takes EXITFLAG or
  1451.     ESCAPEFLAG as parameters (which is just as well, since it never
  1452.     used them anyway).
  1453.     * cplus-except.c (expand_cplus_start_catch): Caller changed.
  1454.     * cplus-parse.y: Removed vestigial call to `expand_end_catch'.
  1455.  
  1456.     * cplus-decl.c (duplicate_decls): Use FUNCTION_SIZE as measure of
  1457.     size of FUNCTION_DECL.
  1458.  
  1459.     * cplus-class.c (finish_base_struct): Get a fresh assoc list for
  1460.     BASETYPE before calling `propagate_basetype_offsets'.  Also, copy
  1461.     the language-specific parts of BASETYPE.
  1462.     * cplus-class.c (propagate_basetype_offsets): FOR_TYPE now owns
  1463.     its assoc list for sure.
  1464.  
  1465.     * cplus-class.c (build_vbase_path): Convert EXPR at each stage of
  1466.     the lowering so that we don't get multiple calls to
  1467.     `build_vbase_path' when we try to build the vbase pointer.
  1468.     @@ This could probably be solved more cleanly.
  1469.  
  1470.     @@ Note that COMPONENT_REFs used as instance variables in method
  1471.     calls lose the fact that they were of fixed type.
  1472.  
  1473.     * cplus-decl.c (LANG_F_OPTIONS): Add FLAG_NO_INLINE for
  1474.     -fno-inline.
  1475.     * cplus-decl.c (grokdeclarator): Implement FLAG_NO_INLINE.
  1476.  
  1477.     * cplus-decl.c (pushdecl): Only record an incomplete variable if
  1478.     it is RECORD_TYPE or UNION_TYPE.  ARRAY_TYPE does not count.
  1479.  
  1480.     * cplus-init.c ({value,purpose}_member): Moved to tree.c.
  1481.     * cplus-decl2.c (FIRST_GLOBAL_OBJECT_NAME): Moved to varasm.c.
  1482.  
  1483.     * cplus-init.c (build_delete): Fixed code to avoid going through
  1484.     virtual function tables when some baseclasses are virtual.
  1485.     Accomplished by changing parameter PROTECT to FLAGS.
  1486.     * All callers changed.
  1487.  
  1488. Fri Jan 26 03:44:15 1990  Michael Tiemann  (tiemann at teacake)
  1489.  
  1490.     * cplus-decl.c (xref_tag): For jjg: make typedefs and struct defs
  1491.     more equivalent.
  1492.  
  1493.     * cplus-decl.c (xref_tag): Derived unions are invalid.
  1494.  
  1495.     * cplus-decl.c (finish_function): For destructors, remember to run
  1496.     base destructors for virtual baseclasses.
  1497.  
  1498.     * cplus-search.c (get_base_distance): Track leftmost path in chain
  1499.     whether or not PATH_PTR is non-NULL.
  1500.  
  1501.     * cplus-init.c (expand_vec_delete): Deleted.  Callers now expand
  1502.     result from `build_vec_delete'.
  1503.     * Reinstall Jan 23 changes marked `@'.
  1504.  
  1505. Thu Jan 25 21:35:27 1990  Michael Tiemann  (tiemann at teacake)
  1506.  
  1507.     * expr.c (expand_expr): Handle expansion of LOOP_STMT and IF_STMT.
  1508.  
  1509.     * tree.c (build_loop): Bring this function out of its #ifdef.
  1510.  
  1511.     * stmt.c (expand_decl): Remove CLEANUP argument.
  1512.     * stmt.c (expand_decl_cleanup): New function, called when cleanup
  1513.     is needed.
  1514.     * cplus-decl.c (finish_decl): Use `expand_decl_cleanup'.
  1515.  
  1516. Wed Jan 24 07:34:40 1990  Michael Tiemann  (tiemann at arkesden)
  1517.  
  1518.     * cplus-decl.c (maybe_build_cleanup): Never build cleanups on the
  1519.     MOMENTARY_OBSTACK.
  1520.  
  1521.     * stmt.c: Merged to 1.36.93.
  1522.     * expr.c: Merged to 1.36.93.
  1523.  
  1524. Tue Jan 23 02:40:42 1990  Michael Tiemann  (tiemann at teacake)
  1525.  
  1526.     * cplus-typeck.c (build_binary_op_nodefault): Use
  1527.     `conver_pointer_to' to convert arguments before comparing
  1528.     aggregate pointers.
  1529.  
  1530.     * cplus-class.c (build_vbase_path): Optimize path to virtual bases
  1531.     through objects with fixed type.
  1532.  
  1533.     * cplus-typeck.c (build_component_ref_2): Deleted.
  1534.     * cplus-typeck.c (build_component_ref): When FIELD comes from a
  1535.     non-"normal" baseclass, go through `convert_to_pointer' to convert
  1536.     DATUM to the right address.
  1537.  
  1538.     * cplus-typeck.c (build_unary_op): Handle case where FIELD is
  1539.     really a TYPE_DECL (which is used just for its DECL_OFFSET).
  1540.  
  1541.     The following changes are for merged GCC/G++.  Changes marked
  1542.     with `@' had to be backed out.
  1543.     @ cplus-init.c (expand_delete): Deleted.
  1544.     @ cplus-decl.c (maybe_build_cleanup): Return tree nodes built by
  1545.     `build_delete' rather than building up structure with DELETE_EXPR.
  1546.     * cplus-decl2.c (finish_function): Expand expression returned from
  1547.     `build_delete' rather than calling `expand_delete'.
  1548.     * cplus-init.c (expand_vec_delete): Ditto.
  1549.     @ expr.c (expand_expr): No longer any need to handle
  1550.     `DELETE_EXPR'.
  1551.     @ tree.def (DELETE_EXPR): Move this to cplus-tree.def.
  1552.  
  1553. Mon Jan 22 00:21:41 1990  Michael Tiemann  (tiemann at teacake)
  1554.  
  1555.     * expr.c (expand_call): Don't reused pending stack space more than
  1556.     once in a given nest of calls.
  1557.  
  1558.     * cplus-init.c (build_delete): Don't build COND_EXPRs when we know
  1559.     we don't have to.
  1560.  
  1561.     * cplus-decl.c (finish_function): At end of destructor, no need to
  1562.     cast down the virtual function table if there is no virtual
  1563.     function table below (i.e., EXPRSTMT is a NOP_EXPR of
  1564.     INTEGER_ZERO_NODE).
  1565.  
  1566.     * cplus-init.c (finish_base_init): Move code which sets
  1567.     CLASSTYPE_MARKED6 of each vbase type to 1 into
  1568.     `expand_aggr_vbase_init'.
  1569.     * cplus-init.c (expand_aggr_vbase_init): Now static in this file.
  1570.     Always set CLASSTYPE_MARKED6 of each vbase type before running the
  1571.     initialization, since all virtual baseclasses exposed to this
  1572.     function must be initialized.
  1573.  
  1574.     * cplus-search.c (build_type_pathname): Fix broken use of
  1575.     obstacks.
  1576.  
  1577.     * cplus-typeck.c (c_expand_return): Don't try to call
  1578.     `expand_return' when DECL_RESULT is of void type.
  1579.  
  1580.     * cplus-lex.c (build_opid): Rename C++-specific
  1581.     `build_op_identifier' to `build_opid'.
  1582.     @@ Suggest changing `build_op_identifier' in tree.o to interface
  1583.     of `build_opid'.
  1584.     * All callers changed.
  1585.  
  1586. Sun Jan 21 06:00:03 1990  Michael Tiemann  (tiemann at teacake)
  1587.  
  1588.     * dbxout.c (dbxout_function): Put out debug info for a named
  1589.     return value.
  1590.     * dbxout.c (dbxout_symbol): Treat a named RESULT_DECL like a
  1591.     VAR_DECL.
  1592.  
  1593.     * cplus-decl.c (store_return_init): If named return value comes in
  1594.     a register, put it in a pseudo.
  1595.     * cplus-typeck.c (mark_addressable): Simplify handling of
  1596.     RESULT_DECL--no need for anything fancy.
  1597.     * cplus-cvt.c (convert_to_reference): Ditto.
  1598.  
  1599.     * cplus-method.c (build_opfncall): Test FLAGS&LOOKUP_COMPLAIN to
  1600.     decide whether call to `build_overload_call' should complain.
  1601.  
  1602.     * cplus-decl.c (FLAG_INT_ENUM_EQUIVALENCE): New variable, controls
  1603.     how ints and enums should interconvert.
  1604.     * cplus-class.c (convert_harshness): Implement behavior based on
  1605.     that flag.
  1606.  
  1607.     * cplus-class.c (build_method_call): alloca `harshness' field of
  1608.     CP before calling `build_overload_call'.
  1609.     * cplus-class.c (build_overload_call): Don't alloca `harshness' of
  1610.     FINAL_CP, since caller does this.  Also, use `oballoc' for
  1611.     `harshness' arrays of CP array when running the list of functions
  1612.     to try.
  1613.  
  1614.     * cplus-method.c (hack_identifier): Use `error', not
  1615.     `error_with_decl' to report visibility violation for static
  1616.     members.  Also, compute visibility with `compute_visibility'.
  1617.  
  1618. Sat Jan 20 04:18:40 1990  Michael Tiemann  (tiemann at teacake)
  1619.  
  1620.     * cplus-decl.c (finish_decl [#if MERGED]): Don't build DECL's
  1621.     cleanups until after it has been laid out.
  1622.  
  1623.     * cplus-decl.c (maybe_build_cleanup [#if MERGED]): Return an
  1624.     RTL_EXPR instead of a DELETE_EXPR.
  1625.  
  1626.     * cplus-class.c (prepare_fresh_vtable): Copy the list of virtual
  1627.     functions fom ASSOC, not from BASE_ASSOC (whose list is too
  1628.     short).
  1629.     @@ Is DECL_VPARENT right at all?
  1630.  
  1631.     * cplus-class.c (modify_vtable_entries): Handle case where virtual
  1632.     function comes from baseclass of virtual baseclass.
  1633.  
  1634.     * cplus-search.c (get_base_distance): Always follow the leftmost
  1635.     non-virtual path.
  1636.  
  1637.     * cplus-class.c (finish_struct): When inheriting a base class's
  1638.     VFIELD, set its DECL_OFFSET to the correct value, for the cases
  1639.     when we use CLASSTYPE_VFIELD instead of `lookup_field' to get to
  1640.     the vfield pointer.
  1641.  
  1642.     * expr.c (expand_expr): Use language-idependent techniques for
  1643.     handling NEW_EXPR.
  1644.  
  1645.     * cplus-init.c (expand_aggr_init): When initializing from a
  1646.     CONSTRUCTOR, it does not matter whether TYPE has a constructor
  1647.     defined or not: just strip out the elements as though they were
  1648.     args to a constructor and proceed.
  1649.  
  1650.     * cplus-class.c (build_method_call): If we need the address of a
  1651.     CONSTRUCTOR, initialize a fresh temporary, as in the NOP_EXPR
  1652.     case.
  1653.  
  1654.     * cplus-decl2.c (grok_method_quals): When building type variants,
  1655.     build the pointer types to the varaints.
  1656.     * cplus-decl.c (grokdeclarator): Ditto.
  1657.  
  1658.     * cplus-class.c (build_method_call): Error message was backwards
  1659.     when DECL_CONTEXT (FUNCTION) was not a basetype for
  1660.     CURRENT_CLASS_TYPE.
  1661.  
  1662.     * cplus-decl.c (grokdeclarator): If QUALS is non-NULL, don't abort
  1663.     if TYPE is not METHOD_TYPE.  The correct error message will be
  1664.     generated later.
  1665.  
  1666.     * cplus-method.c (hack_identifier): Check visibility of VAR_DECL
  1667.     and CONST_DECL nodes.
  1668.  
  1669.     * cplus-class.c (instantiate_type): Don't smash the operand of an
  1670.     ADDR_EXPR if the type instantiation fails.  Also, only give an
  1671.     error message in that case if COMPLAIN is nonzero.
  1672.  
  1673. Fri Jan 19 15:12:27 1990  Michael Tiemann  (tiemann at teacake)
  1674.  
  1675.     * cplus-decl2.c (grok_method_quals): Don't drop list of exceptions
  1676.     raised.
  1677.  
  1678. Thu Jan 18 00:20:29 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1679.  
  1680.     * cplus-lex.c (init_lex): Allocate OPNAME_TAB and ASSIGNOP_TAB.
  1681.  
  1682. Wed Jan 17 07:26:05 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1683.  
  1684.     * cplus-lex.c (get_time_identifier): Added cast for `alloca'.
  1685.     * cplus-tree.c (layout_basetypes): Ditto.
  1686.  
  1687.     * stmt.c (expand_raise): Return nonzero if in exception nesting.
  1688.  
  1689.     * cplus-lex.c (init_lex): If C compiler doesn't understand the
  1690.     construct `sizeof ("string")', then fill in initializer for
  1691.     OPNAME_END by hand.
  1692.  
  1693.     * cplus-init.c: Move declarations of extern struct rtx_def things
  1694.     to top of file to keep /bin/cc happy.
  1695.  
  1696.     * cplus-lex.c (init_lex): Set DECL_PRINTABLE_NAME.
  1697.  
  1698.     * varasm.c (record_constant_rtx): Save DESC on `current_obstack'
  1699.     instead of `saveable_obstack'.
  1700.  
  1701.     * tree.c (set_identifier_size): SIZE is size in bytes.
  1702.     * cplus-lex.c (init_lex): Call `set_identifier_size' with number
  1703.     of bytes, not number of slots.
  1704.  
  1705.     * toplev.c (compile_file): If `bison.simple' is out of date,
  1706.     consider that an error.
  1707.  
  1708.     * cplus-cvt.c (convert): Better error message if type conversion
  1709.     via constructor fails.
  1710.  
  1711.     * cplus-typeck.c (build_modify_expr): Spurious `else' appeared
  1712.     when LHSTYPE was aggr type.  Deleted.
  1713.  
  1714.     * cplus-decl2.c (finish_file): Make the dummy variable at the end
  1715.     of the virtual function table chain look defined and used (soas
  1716.     not to generate spurious warnings).
  1717.  
  1718. Tue Jan 16 15:42:30 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1719.  
  1720.     * varasm.c (output_constant): Merged latest GCC changes.
  1721.     * toplev.c: Merged latest GCC changes.
  1722.  
  1723.     * cplus-decl.c (init_lex): Must call
  1724.     `set_identifier_size' before allocating any identifiers.
  1725.  
  1726.     * All files: Changed MEMBER_REF to OFFSET_REF.
  1727.     * cplus-init.c (build_offset_ref): Rename function
  1728.     `build_member_ref' to this.
  1729.     * cplus-init.c (resolve_offset_ref): Rename function
  1730.     `resolve_member_ref' to this.
  1731.  
  1732.     * cplus-lex.c (init_lex): Handle language-specific tree codes.
  1733.  
  1734.     * tree.def (IDENTIFIER_NODE): Default length is 2.
  1735.     * tree.def ({SCOPE,MEMBER}_REF): Moved definition to
  1736.     cplus-tree.def.
  1737.     * tree.def (TYPE_EXPR): Ditto.
  1738.  
  1739.     * tree.c: Merge language-specific tree code support from GCC
  1740.     version 1.90.
  1741.     * tree.c (tree_cons,build_tree_list): Simplify these back to using
  1742.     `make_node' instead of inline-expansion.
  1743.     * tree.c (build_parse_node): renamed function `build_nt0' to this.
  1744.     All callers changed.
  1745.  
  1746.     * Makefile glitch for collect2 fixed.
  1747.  
  1748. Tue Jan 16 00:38:39 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1749.  
  1750.     * version.c: Version 1.36.3 released.
  1751.  
  1752.     * Makefile: Fixed makefile for collect2 (for Convexen) as per
  1753.     suggesions of <ngo%tammy@harvard.harvard.edu>.
  1754.     Also fixed a typo.
  1755.  
  1756. Mon Jan 15 10:57:43 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1757.  
  1758.     * cplus-class.c (build_vbase_path): If path is erroneous (i.e., up
  1759.     from a virtual baseclass), then set *BASEP = NULL_TREE.
  1760.     * cplus-cvt.c (convert_to_pointer_force): Test BASETYPE before
  1761.     testing the DECL_OFFSET of its TYPE_NAME.
  1762.  
  1763.     * expr.c (store_one_arg): Handle non-PARM_BOUNDARY BLKmode
  1764.     parameters in a way that is symmetric with `assign_parms'.
  1765.  
  1766.     * cplus-init.c (expand_vec_init): Allow assignment semantics if
  1767.     FROM_ARRAY is 2.
  1768.     * cplus-typeck.c (build_modify_expr): Call `expand_vec_init' with
  1769.     in this fashion if an array assignment must be performed.
  1770.  
  1771.     * expr.c (fixed_type_p): New function says whether the compiler
  1772.     guarantees that it knows the true type of an object.
  1773.     * expr.c (expand_expr): Call that function for INIT_EXPR and
  1774.     MODIFY_EXPR.  Also, for MODIFY_EXPR, check both RHS and LHS.
  1775.  
  1776.     * cplus-typeck.c (build_unary_op): When building an ADDR_EXPR of a
  1777.     COMPONENT_REF, must convert the base to the pointer type of the
  1778.     DECL_CONTEXT of FIELD, not simply ARGTYPE.  Bug triggered when
  1779.     FIELD has same type as a virtual or non-leftmost baseclass of
  1780.     TYPE.
  1781.  
  1782. Sun Jan 14 07:50:28 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1783.  
  1784.     * cplus-typeck.c (actualparameterlist): Convert FUNCTION_DECLs for
  1785.     virtual functions to their proper representation if they were
  1786.     instantiated.
  1787.  
  1788.     * cplus-typeck.c (instantiate_type_1): New function, factors out
  1789.     common code in calling `instantiate_type'.
  1790.     * cplus-class.c (instantiate_type): Now permitted to call this
  1791.     function with OP_IDENTIFIER.  (Previously would abort).
  1792.  
  1793.     * Makefile: Use $(INCLUDES) instead of various random -I options
  1794.     scattered throughout front-end.
  1795.  
  1796.     * varasm.c (assemble_variable): Fix bug where NAME has a '*'
  1797.     prefix.
  1798.  
  1799. Sat Jan 13 00:17:25 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1800.  
  1801.     * cplus-class.c (compute_conversion_costs): Fixed comments and
  1802.     rearranged code that handled type instantiation.  Also handled
  1803.     case where type instantiation leaves a parameter ERROR_MARK_NODE
  1804.     (consequently making ACTUAL_TYPE ERROR_MARK_NODE).
  1805.     * cplus-method.c (report_type_mismatch): Give better error message
  1806.     when type instatiation fails and clobbers the argument type.
  1807.  
  1808.     * cplus-type2.c (basetype_or_else): Code factorization.
  1809.     * All places with code of the form
  1810.  
  1811.           if (t1 == t2 || get_base_type (t1, t2, 0))
  1812.             do something;
  1813.           else
  1814.               do something else;
  1815.  
  1816.           now calls this function.
  1817.  
  1818.     * cplus-search.c (get_base_type): For jjg@sun.com: let friend
  1819.     classes TYPE have access to immediate baseclasses of TYPE.
  1820.     * cplus-search.c (get_base_distance): Same change.
  1821.  
  1822.     * cplus-method.c (build_opfncall): Give error messages on all
  1823.     overloaded functions which non-trivially fail except ADDR_EXPR and
  1824.     MODIFY_EXPR.
  1825.     * cplus-class.c (build_method_call): Improved error message for
  1826.     non-const member function called with const object.
  1827.  
  1828.     * cplus-class.c (build_vbase_path): New function.  Multi-level
  1829.     version of `build_vbase_pointer'.  Code was moved from
  1830.     `convert_to_pointer'.
  1831.     * cplus-cvt.c (convert_to_pointer): Call `build_vbase_path'.
  1832.     * cplus-cvt.c (convert_pointer_to): Ditto.
  1833.     * cplus-cvt.c (convert_to_pointer_force): Remove duplicated code
  1834.     and call `build_vbase_path'.
  1835.  
  1836.     * cplus-decl.c (original_result_rtx): New variable.  If named
  1837.     return value starts in register, but needs to be addressable, then
  1838.     we put the original RESULT_DECL's rtl in here.
  1839.     * cplus-typeck.c (c_expand_return): Implement this.
  1840.     * cplus-decl.c (finish_function): At end of function, if
  1841.     ORIGINAL_RESULT_RTX is non-zero, move DECL_RESULT (FNDECL) there.
  1842.     * cplus-typeck.c (mark_addressable): Allow this new feature.
  1843.     * cplus-cvt.c (convert_to_reference): Ditto.
  1844.  
  1845. Fri Jan 12 00:20:06 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1846.  
  1847.     * cplus-tree.h (TREE_CALLS_NEW): New meaning for TREE_LANG_FLAG_2:
  1848.     for any kind of _EXPR or _REF node, it means that underneath is a
  1849.     call to the storage allocator.  If we later find out what was
  1850.     wanting initialization, we can pitch the call to `new', and the
  1851.     subsequent copy, winning big on things like "return String (foo);".
  1852.     * cplus-init.c (build_new): Set this bit.
  1853.     * cplus-class.c (build_method_call): Ditto.
  1854.     * cplus-method.c (build_opfncall): Ditto.
  1855.     * cplus-init.c (expand_aggr_init_1): Optimize calls to
  1856.     constructors.
  1857.  
  1858.     * cplus-cvt.c (convert_to_reference): If DECL is ERROR_MARK_NODE,
  1859.     then consider this an implicit conversion; if DECL is NULL_TREE,
  1860.     it is explicit.
  1861.     * cplus-typeck.c (convert_for_initialization): Be explicit that
  1862.     this is an implicit conversion.
  1863.  
  1864.     * cplus-cvt.c (convert_from_reference): Don't special-case
  1865.     converting REFERENCE_EXPRs from references.
  1866.  
  1867.     * cplus-cvt.c (convert_to_*): Factor out checks that EXPR is a
  1868.     REFERENCE_TYPE object.
  1869.     * cplus-cvt.c (convert{_force}): Factor it to here.
  1870.  
  1871.     * cplus-cvt.c (convert_pointer_to): New function.  Previously
  1872.     `convert_to_nonzero_pointer', but now takes converts to pointer-to
  1873.     TYPE, rather than to TYPE.
  1874.     * cplus-cvt.c (convert_to_nonzero_pointer): Deleted.
  1875.     * All callers changed.
  1876.  
  1877.     * cplus-cvt.c (build_up_reference): If LOOKUP_PROTECTED_OK is set,
  1878.     let `get_base_type' return an immediate private baseclass without
  1879.     complaining.
  1880.     * cplus-cvt.c (convert_to_reference): Don't need to check whether
  1881.     conversion violates visibilities, since FLAGS is passed to
  1882.     `convert_to_reference'.
  1883.     * cplus-search.c (get_base_type): Implement that (if PROTECT == 3).
  1884.  
  1885.     * stmt.c (*except*): Use ESCAPE_LABEL instead of EXIT_LABEL as
  1886.     primary means of control over exception handling nestings.
  1887.     Where EXITFLAG was passed, also pass ESCAPEFLAG.
  1888.     * All callers changed.  ESCAPEFLAG now controls behavior, not
  1889.     EXITFLAG.
  1890.  
  1891.     * stmt.c (expand_exit_nonexcept): Delete this function.
  1892.     * cplus-parse.y (stmt): Back out change which called
  1893.     `expand_exit_nonexcept' instead of `expand_exit_something'.
  1894.  
  1895.     * cplus-init.c (expand_recursive_init): Don't forget to initialize
  1896.     the vbase pointers if FOR_TYPE uses virtual baseclasses.
  1897.  
  1898.     * cplus-class.c (rank_for_overload): const/non-const disagreement
  1899.     is between checking EVIL and checking USER.
  1900.     * cplus-class.c (build_method_call): Don't hastily choose a method
  1901.     which has const/non-const disagreement.
  1902.  
  1903.     * cplus-decl.c (build_function_decl): Unify `builtin_function' and
  1904.     `auto_function'; also make it optional to push the function into
  1905.     the binding contour.
  1906.     * cplus-decl.c (init_decl_processing): Build ABORT_FNDECL.
  1907.     * cplus-decl2.c (grok_function_init): Use ABORT_FNDECL.
  1908.     * cplus-except.c (init_exception_processing): Ditto.
  1909.  
  1910. Thu Jan 11 10:39:31 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1911.  
  1912.     * cplus-decl2.c (finish_file): Merge changes from Raeburn
  1913.     (raeburn@athena.mit.edu) which name file-level initializers
  1914.     using global names declared instead of the filename containing
  1915.     the objects needing file-level initialization.
  1916.     * varasm.c (assemble_{variable,function}): Rest of changes merged.
  1917.  
  1918.     * cplus-cvt.c (convert_from_reference): When converting a
  1919.     REFERENCE_EXPR, wrap TREE_OPERAND (VAL, 0) in the NOP_EXPR
  1920.     instead of VAL--to save work later in `expand_expr'.
  1921.  
  1922.     * cplus-tree.h (LOOKUP_NO_CONVERSION): New flag which inhibits
  1923.     looking for user-defined type conversions.
  1924.     * cplus-type2.c (build_functional_cast): Use LOOKUP_NO_CONVERSION
  1925.     when calling constructor since if a type conversion applied, we
  1926.     don't want "two-level" conversions to take place.
  1927.     * cplus-class.c (build_method_call): Test this flag when PASS == 2
  1928.     and cp->user is non-zero.
  1929.  
  1930.     * cplus-decl.c (grokdeclarator): Don't set TYPE_HAS_DESTRUCTOR
  1931.     here.
  1932.     * cplus-decl2.c (grokclassfn): Set it here instead.
  1933.  
  1934. Wed Jan 10 07:42:39 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1935.  
  1936.     * cplus-class.c (build_method_call): -fall-virtual implies that
  1937.     2nd argument to operator->() is an int, not a T (C::*X)(...).
  1938.  
  1939.     * cplus-decl.c (finish_function): Keep named return values from
  1940.     catching warnings from jump.c about functions which appear to not
  1941.     return a value.
  1942.  
  1943.     * cplus-type2.c (process_init_constructor): Test INIT before
  1944.     copying TREE_HAS_CONSTRUCTOR flag to RESULT.
  1945.  
  1946.     * cplus-decl.c (pushdecl): If we had ANON_AGGRNAME_P in "C"
  1947.     language scope, and if we get a better name, fix that up as well.
  1948.     (Was only doing fixup for "C++" language scope).
  1949.  
  1950.     * cplus-method.c (dump_init): Handle CONSTRUCTOR as
  1951.     initialization.
  1952.     * cplus-typeck.c (actualparameterlist): Here, too.
  1953.  
  1954.     * cplus-decl.c (grokdeclarator): Move test of friend functions
  1955.     with method qualifiers to `grokfndecl'.
  1956.     * cplus-decl.c (grokfndecl): If QUALS is non-zero, then the
  1957.     TREE_CODE of TYPE must be METHOD_TYPE.
  1958.  
  1959.     * integrate.c (expand_inline_function): Code using
  1960.     THIS_STRUCT_VALUE_RTX was (blatantly) incorrect in case where
  1961.     STRUCT_VALUE_INCOMING_RTX was MEM.  Code that looked right was
  1962.     #if 0'd out, but don't know why.  Changed back to original code.
  1963.  
  1964. Tue Jan  9 22:56:22 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  1965.  
  1966.     * cplus-parse.y (stmt): Exception contour is transparent to BREAK
  1967.     statement.  Call `expand_exit_nonexcept' instead of
  1968.     `expand_exit_something'.
  1969.     * stmt.c (expand_exit_nonexcept): New function.
  1970.  
  1971.     * cplus-decl.c (build_enumerator): Accidently shared INTEGER_CST
  1972.     nodes which should not have been shared.
  1973.  
  1974. Sun Jan  7 00:13:39 1990  Michael Tiemann  (tiemann at g.oswego.edu)
  1975.  
  1976.     * cplus-init.c (expand_aggr_init_1): Use CONST0_RTX as TARGET for
  1977.     call to `expand_expr' in case of COND_EXPR.
  1978.     Similar changes made elsewhere in compiler where `expand_expr' was
  1979.     called.
  1980.  
  1981.     * cplus-typeck.c (build_modify_expr_1): When CODE is INIT_EXPR,
  1982.     and we call a constructor, remember to dereference the result we
  1983.     return.
  1984.  
  1985.     * cplus-init.c (expand_vec_init): Goto of init_by_default was
  1986.     accidently circumventing initialization of variable BASE2.
  1987.     Also fixed to handle initialization by default in more cases.
  1988.  
  1989.     * cplus-typeck.c (build_modify_expr_1): Typo.  Use "<" instead of
  1990.     "<=" for CLASSTYPE_N_BASECLASS loop.
  1991.     * cplus-search.c (get_base_type_1): Same typo (but this function
  1992.     is never called).
  1993.  
  1994. Sat Jan  6 21:55:31 1990  Michael Tiemann  (tiemann at g.oswego.edu)
  1995.  
  1996.     * cplus-tree.h (TREE_HAS_CONSTRUCTOR): For CONSTRUCTOR, means that
  1997.     it was a GNU C constructor expression.
  1998.     * cplus-parse.y (cast_expr): Set that bit.
  1999.     * cplus-type2.c (process_init_constructor): Propagate this bit.
  2000.     * cplus-init.c (expand_aggr_init_1): Test that bit and call
  2001.     `store_init_value' if set.
  2002.  
  2003.     * cplus-lex.c: Handle strrchr/rindex problem in one place instead
  2004.     of two.
  2005.  
  2006.     * cplus-init.c (expand_aggr_init_1): Convert INIT to type for EXP
  2007.     treating INIT as compound expr.
  2008.  
  2009.     * cplus-decl.c (grokparms): Can't use `error_with_decl' on a
  2010.     PARM_DECL here because DECL_CONTEXT is not set up yet.  Fixed in 2
  2011.     places.
  2012.  
  2013.     * cplus-init.c (resolve_member_ref): Check that member is
  2014.     FIELD_DECL before bothering about use of non-static member in
  2015.     static function context.
  2016.  
  2017.     * cplus-init.c (embrace_waiting_friends): If TYPE_NAME (TYPE) is
  2018.     not a TYPE_DECL, it has no friends waiting.
  2019.  
  2020.     * cplus-dem.c (optable): Filled in ommissions found by Ron
  2021.     Guilmette.
  2022.  
  2023.     * cplus-decl2.c (grokopexpr): If IS_DECL tells us we have a static
  2024.     member function, but TYPE is a METHOD_TYPE, we must send the right
  2025.     argument list to build_operator_fnname.
  2026.  
  2027.         * Makefile: Explicitly link all the gen*.o and insn-*.? files.
  2028.     Otherwise, we get symbolic links to "gen*.o", etc.
  2029.  
  2030.     * make-links.g++: Added symout.c to BORROWED_FILES.
  2031.  
  2032. Tue Jan  2 00:39:40 1990    (tiemann at calvin)
  2033.  
  2034.     * cplus-except.c (cplus_expand_end_except): New parameter EXITFLAG
  2035.     says whether to exit current exception contour and try the next
  2036.     one.
  2037.     * cplus-parse.y: Callers changed.
  2038.  
  2039.     * cplus-decl.c (pushdecl): Clear TREE_PUBLIC only if VAR_DECL is
  2040.     TREE_READONLY and not DECL_EXTERNAL.  DECL_EXTERNAL is meaningless
  2041.     for other than VAR_DECLs.
  2042.     * cplus-decl.c (duplicate_decls): Same change.
  2043.     @@ Maybe we can eliminate some duplicated code here!
  2044.  
  2045.     * cplus-tree.c (copy_to_permanent): If T is NULL_TREE, return it.
  2046.  
  2047.     * cplus-cvt.c (convert_to_aggr): Deal with "in charge" parameter
  2048.     if BASETYPE uses virtual baseclasses.
  2049.  
  2050.     * cplus-class.c (build_overload_call): Change name of DECL to
  2051.     OVERLOAD_NAME.  Also, append VOID_LIST_NODE to end of PARMTYPES,
  2052.     to build more accurate overload name.
  2053.  
  2054. Mon Jan  1 13:36:07 1990    (tiemann at calvin)
  2055.  
  2056.     * cplus-decl.c (store_parm_decls): No need for PRESERVE flag, so
  2057.     deleted.  All callers changed.
  2058.  
  2059.     * cplus-parse.y (member_init): De-implement keeping virtual
  2060.     baseclass initializers on the permanent obstack.  Now handled by
  2061.     "in charge" parameter to constructor.
  2062.  
  2063.     * cplus-cvt.c (convert_to_reference): Convert EXPR from reference
  2064.     if it came in as a reference and its conversion to TYPE& may
  2065.     change its value (i.e., if it uses MI or VB).
  2066.  
  2067.     * cplus-class.c (build_method_call): Use DECL_CONTEXT, not
  2068.     DECL_VCONTEXT of FUNCTION when LOOKUP_NONVIRTUAL is in effect.
  2069.     Factored out duplicated code in the process.
  2070.  
  2071.     * cplus-class.c (build_method_call): Constructors called when
  2072.     `this' is logically zero must perform any virtual baseclass
  2073.     initialization.  Other constructors (which are used for
  2074.     initialization of sub-ojbects), never perform virtual baseclass
  2075.     initialization.
  2076.  
  2077.